2017-11-17 8 views
0

私はこの質問に多くの答えを見たことがありますが、これらのいずれかが私のために働くと私は理由を知らない。何かの前にデータベースをドロップ

だから、私はテストを実行する前に、いくつかを追加した後、データベース内のすべてのデータを削除したいと思います。 (でも、テストのタイトルは表示されません)、

const db = require('../models'); 

describe('Setup database for testing',() => { 
    before('Sync and create data', done => { 
     db.sequelize 
      .query('SET FOREIGN_KEY_CHECKS = 0', null, {raw: true}) 
      .then(() => { 
       db.User.sync({force: true}); 
      }) 

      // Create everything the tests need here 
      .then(() => { 
       db.User.create({username: 'foo', password: 'secret', email: '[email protected]'}); 
      }) 

      .then(() => { 
       db.sequelize.query('SET FOREIGN_KEY_CHECKS = 1', null, {raw: true}); 
      }) 
      .then(() => { 
       done(); 
      }); 
    }); 
}); 

を、私は私のテストフォルダにモカを実行すると、私はエラーを持っていない、何も前にフックが実行されている私に言っていない:これは私がこれまで行ってきたものです。しかし、ファイルがダミーコードを書き込むときにエラーが発生するため、ファイルが実行されています。

答えて

0

実行する前フックのために、記述内に少なくとも1つのテストが必要です。

describe('Setup database for testing',() => { 
    before('Sync and create data', done => { 
     db.sequelize 
      .query('SET FOREIGN_KEY_CHECKS = 0', null, {raw: true}) 
      .then(() => { 
       db.User.sync({force: true}); 
      }) 

      // Create everything the tests need here 
      .then(() => { 
       db.User.create({username: 'foo', password: 'secret', email: '[email protected]'}); 
      }) 

      .then(() => { 
       db.sequelize.query('SET FOREIGN_KEY_CHECKS = 1', null, {raw: true}); 
      }) 
      .then(() => { 
       done(); 
      }); 
    }); 


    //add a test for the before hook to run 
    it("runs", function() { 
     console.log("test"); 
    }); 
}); 
+0

ありがとうございます!しかし、今、私は '親行を削除または更新できません:外来キー制約が失敗しました'というエラーが出たり、 'SET FOREIGN_KEY_CHECKS = 0'を実行しました。 – Wizix

関連する問題