我已经看到很多这个问题的答案,但其中任何一个都适合我,我不知道为什么。
所以我想在运行测试之前删除数据库中的所有数据,然后添加一些数据。这就是我到目前为止所做的:
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: 'foo@local.dev'});
})
.then(() => {
db.sequelize.query('SET FOREIGN_KEY_CHECKS = 1', null, {raw: true});
})
.then(() => {
done();
});
});
});
当我在我的测试文件夹上运行mocha时,我没有错误,没有告诉我之前的挂钩运行(即使测试标题没有显示)。但是文件正在运行,因为当我在其中编写虚拟代码时,我有错误。
答案 0 :(得分:0)
您需要在describe中至少进行一次测试才能运行前挂钩。
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: 'foo@local.dev'});
})
.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");
});
});