使用mocha javascript测试框架,我希望能够在先前定义的测试通过后执行多个测试(所有异步)。
我不想将这些测试嵌套在彼此中。
describe("BBController", function() {
it("should save", function(done) {});
it("should delete", function(done) {});
})
答案 0 :(得分:4)
使用--bail
选项。确保你至少使用摩卡0.14.0。 (我已经尝试使用旧版本而没有成功。)
首先,只有在前一个测试完成后,才能让mocha运行测试。这就是mocha默认工作的方式。将其保存到test.js
:
describe("test", function () {
this.timeout(5 * 1000); // Tests time out in 5 seconds.
it("first", function (done) {
console.log("first: do nothing");
done();
});
it("second", function (done) {
console.log("second is executing");
// This test will take 2.5 seconds.
setTimeout(function () {
done();
}, 2.5 * 1000);
});
it("third", function (done) {
console.log("third is executing");
// This test will time out.
});
it("fourth", function (done) {
console.log("fourth: do nothing");
done();
});
});
然后执行:
mocha -R spec test.js
在下列情况之前,你不会看到第四次测试开始:
现在,运行:
mocha -R spec --bail test.js
一旦测试3失败,Mocha就会停止。
答案 1 :(得分:-5)
如果您的测试设置正确,只测试一小块业务逻辑,那么您可以异步运行测试,但不应该进行其他测试。要完成测试的方法是执行以下操作:
describe("BBController", function() {
it("should save", function(done) {
// handle logic
// handle assertion or other test
done(); //let mocha know test is complete - results are added to test list
});
it("should delete", function(done) {
// handle logic
// handle assertion or other test
done(); //let mocha know test is complete - results are added to test list
});
});
再一次,没有测试需要等待另一个测试运行才能通过,如果你遇到这个问题,那么你应该考虑一些方法来推动你的依赖注入或用before方法准备你的测试