我正在使用mocha及其钩子编写测试用例,该钩子使用andbeforeEach
删除并重新创建所有表。sequelize.drop
sequelize.sync
lib/testutils.js
exports.deleteAll = function () {
return sequelize.drop({logging: false, cascade: true}).then(function() {
return sequelize.sync({logging: false});
});
};
测试/控制器/controllers.js
(A)这确实有效:
var testutils = require("../../lib/testutils");
describe("CRUD Controller", function() {
beforeEach(function(done) {
testutils.deleteAll().then(function(){
done();
}).catch(function(err) {
return done(err);
});
});
describe("#read()", function(){
it("should....", function(done) {
});
});
}
(B)这不起作用:
var testutils = require("../../lib/testutils");
describe("CRUD Controller", function() {
beforeEach(function(done) {
testutils.deleteAll().then(done).catch(function(err) {
return done(err);
});
});
describe("#read()", function(){
it("should....", function(done) {
});
});
}
我不明白为什么testutils.deleteAll().then(done)
没有工作,第一个测试用例it("should....", function(done)
没有等待beforeEach
钩子完成。我得到了TypeError: Converting circular structure to JSON
。然而,testutils.deleteAll().then(function(){ done(); })
确实奏效了。
我的问题是为什么(B)不工作而(A)工作?任何想法?有什么不对?