2016-06-30 4 views
0

私は、モハを使用してテストデータベースでNodejsアプリケーションをテストしていました。私は完全に働いた次のコードを、持っていた各テストの前にDBをリセットするために:モカテスト間のKnex移行の実行

process.env.NODE_ENV = 'test'; 
    var knex = require('../db/knex'); 

    describe("Add Item", function() { 

     beforeEach(function(done) { 
     knex.migrate.rollback() 
     .then(function() { 
      knex.migrate.latest() 
      .then(function() { 
      return knex.seed.run() 
      .then(function() { 
       done(); 
      }); 
      }); 
     }); 
     }); 

    ... 

を私は以来、私の統合テストのためのモカ-casperjsにモカから切り替えた、そして今knex移行はしません走る

 undefined is not an object (evaluating 'knex.migrate.rollback') 
    phantomjs://platform/new-item.js:12:17 
    [email protected]://platform/mocha-casperjs.js:114:20 
    [email protected]://platform/mocha.js:4314:12 
    [email protected]://platform/mocha.js:4266:18 
    [email protected]://platform/mocha.js:4630:13 
    phantomjs://platform/mocha.js:4652:9 
    [email protected]://platform/mocha.js:12620:27 

答えて

0

マイグレーション機能がwebpackビルドに含まれていないことは間違いありません。 http://knexjs.org/にアクセスしてデバッグコンソールを開き、異なるクライアントをチェックアウトした場合など。 mysql.migrateには、まったく宣言されている関数がないことがわかります。

ノードlibの代わりにwebpack buildを明示的に読み込むと、実際にノードでチェックアウトすることもできます。

// load webpack build instead of node build... 
let knex = require('knex/build/knex')({client : 'pg'}); 
console.log(knex.migrate); 
// outputs: {} 

だから、なぜ、node.jsの代わりにPhantomJSブラウザでテストを実行しようとしているのですか?

client.migrate is empty

+0

ありがとうございます。 knexを必要とするテストではPhantomjsを避けることにします。 – cmcloughlin

関連する問題