我的mocha测试中有很多重复: describe("Some test", function() { before(helpers.testPrepare); beforeEach(helpers.freshDB); it("should foo", function(done) { //... done(); }); after(helpers.teardownServer);});describe("Another test"
describe("Some test", function() {
before(helpers.testPrepare);
beforeEach(helpers.freshDB);
it("should foo", function(done) {
//...
done();
});
after(helpers.teardownServer);
});
describe("Another test", function() {
before(helpers.testPrepare);
beforeEach(helpers.freshDB);
it("should bar", function(done) {
//...
done();
});
after(helpers.teardownServer);
});
如果我忘记在每次调用之前调用它会导致问题,这可能会导致问题.我想定义一个描述,确保我总是调用我的设置和拆解,所以我可以写:
我想把它写成:
var describe = require('./helpers').describe;
describe("Some test", function() {
it("should foo", function(done) {
//...
done();
});
});
我怎么能这样做,因为摩卡定义描述为全局?如何确保一切按正确的顺序执行?
我会创建一个包含以下内容的helpers.js文件:function beforeEachExample() { console.log("before each"); }
function beforeExample() { console.log("before"); }
function afterExample() { console.log("after"); }
function makeSuite(desc, cb) {
describe(desc, function () {
before(beforeExample);
beforeEach(beforeEachExample);
cb();
after(afterExample);
});
}
exports.makeSuite = makeSuite;
然后我可以测试/ something.js:
var makeSuite = require("../helpers").makeSuite;
makeSuite("something", function () {
it("one", function () {});
it("two", function () {});
});
并测试/ somethingelse.js:
var makeSuite = require("../helpers").makeSuite;
makeSuite("something else", function () {
it("one", function () {});
it("two", function () {});
});
运行上面的设置给出:
$mocha
something
before
before each
✓ one
before each
✓ two
after
something else
before
before each
✓ one
before each
✓ two
after
4 passing (5ms)
