我正在尝试使用mocha和chai对node.js进行单元测试。
index.js
module.exports = {
setA: function () {
return new Promise(function () {
setTimeout(function () {
console.log("aaaa");
a = 1;
}, 2000)
})
}
}
index.spec.js
var assert = require("assert");
var SetA = require("./index")
a = 0;
before(function() {
SetA.setA();
});
it('a should be set to 1', function() {
assert(a === 1);
});
测试用例
如何使before块同步,以便仅在完成执行后才将其移动到It块?
答案 0 :(得分:3)
摩卡(Mocha)理解诺言,因此您应该能够只返回SetA
生成的诺言:
before(function() {
return SetA.setA();
});
还要查看您的功能SetA
-您永远都不会兑现承诺。您将需要以下内容:
module.exports = {
setA: function () {
return new Promise(function (resolve) { //<< resolve
setTimeout(function () {
console.log("aaaa");
a = 1;
resolve() //<< call resolve when you're done
}, 2000)
})
}
}