我的mocha测试中有很多重复:
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);
});
Run Code Online (Sandbox Code Playgroud)
如果我忘记打电话beforeEach,这可能会导致问题,重构很痛苦.我想定义一个describe确保我总是调用我的设置和拆解,所以我可以写:
我想把它写成:
var describe = require('./helpers').describe;
describe("Some test", function() {
it("should foo", function(done) {
//...
done();
});
});
Run Code Online (Sandbox Code Playgroud)
我怎么能这样做,因为摩卡定义describe为全球?如何确保一切按正确的顺序执行?
我会创建一个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;
Run Code Online (Sandbox Code Playgroud)
然后我可以test/something.js:
var makeSuite = require("../helpers").makeSuite;
makeSuite("something", function () {
it("one", function () {});
it("two", function () {});
});
Run Code Online (Sandbox Code Playgroud)
而且test/somethingelse.js:
var makeSuite = require("../helpers").makeSuite;
makeSuite("something else", function () {
it("one", function () {});
it("two", function () {});
});
Run Code Online (Sandbox Code Playgroud)
运行上面的设置给出:
$ mocha
something
before
before each
? one
before each
? two
after
something else
before
before each
? one
before each
? two
after
4 passing (5ms)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
901 次 |
| 最近记录: |