Mocha 测试 运行 使用 before/beforeEach 的顺序不正确
Mocha test are not running in right order using before/beforeEach
我使用以下代码,在我复制文件之前,之后的测试正在使用断言,但是当我 运行 它时 before/each 是考试后发生的事情,我在这里错过了什么?
我也尝试过使用 beforeach 但没有成功
describe(" Handler", function() {
before((done) => {
fs.stat(utils.pathSetup() + "/ins/", function (err, stats) {
if (!err) {
console.log("success");
} else {
let lclpath = utils.pathSetup();
Loder.add({folderPath: lclpath + "/test/testcontent/ins"});
console.log(err);
}
});
done();
});
//这个调用在前面的语句之前 为什么???????
//这应该发生在 before 完成之后,它们在同一个测试块中,这个被调用就在...
Handler.invoke(req, res)
.then((Ref) => {
}).done();
ee.on('Started', (arg) => {
evtResStart = arg;
});
在调试中,当我将 BP 置于 before 之前并单击 step into 将我带到 Handler.invoke 而不是在 before...:(
知道这样的事情可能是什么原因吗?
如果您在 tests/befores 中使用 done
,则需要在回调中调用 done()
,例如
before((done) => {
fs.stat(utils.pathSetup() + "/ins/", function (err, stats) {
if (!err) {
console.log("success");
} else {
let lclpath = utils.pathSetup();
Loder.add({folderPath: lclpath + "/test/testcontent/ins"});
console.log(err);
}
done();
});
});
编辑:假设您问题中的评论应该被格式化为代码,那么您的 Handler
内容是否在 it
块中?
it('should do something', () => {
Handler.invoke(req, res)
.then((Ref) => {
}).done();
ee.on('Started', (arg) => {
evtResStart = arg;
});
});
您是否尝试过将 done();
放入 fs.stat 的回调中?
这样你的测试应该运行如你所愿
before((done) => {
fs.stat(utils.pathSetup() + "/ins/", function (err, stats) {
if (!err) {
console.log("success");
} else {
let lclpath = utils.pathSetup();
Loder.add({folderPath: lclpath + "/test/testcontent/ins"});
console.log(err);
}
done();
});
});
我使用以下代码,在我复制文件之前,之后的测试正在使用断言,但是当我 运行 它时 before/each 是考试后发生的事情,我在这里错过了什么?
我也尝试过使用 beforeach 但没有成功
describe(" Handler", function() {
before((done) => {
fs.stat(utils.pathSetup() + "/ins/", function (err, stats) {
if (!err) {
console.log("success");
} else {
let lclpath = utils.pathSetup();
Loder.add({folderPath: lclpath + "/test/testcontent/ins"});
console.log(err);
}
});
done();
});
//这个调用在前面的语句之前 为什么??????? //这应该发生在 before 完成之后,它们在同一个测试块中,这个被调用就在...
Handler.invoke(req, res)
.then((Ref) => {
}).done();
ee.on('Started', (arg) => {
evtResStart = arg;
});
在调试中,当我将 BP 置于 before 之前并单击 step into 将我带到 Handler.invoke 而不是在 before...:(
知道这样的事情可能是什么原因吗?
如果您在 tests/befores 中使用 done
,则需要在回调中调用 done()
,例如
before((done) => {
fs.stat(utils.pathSetup() + "/ins/", function (err, stats) {
if (!err) {
console.log("success");
} else {
let lclpath = utils.pathSetup();
Loder.add({folderPath: lclpath + "/test/testcontent/ins"});
console.log(err);
}
done();
});
});
编辑:假设您问题中的评论应该被格式化为代码,那么您的 Handler
内容是否在 it
块中?
it('should do something', () => {
Handler.invoke(req, res)
.then((Ref) => {
}).done();
ee.on('Started', (arg) => {
evtResStart = arg;
});
});
您是否尝试过将 done();
放入 fs.stat 的回调中?
这样你的测试应该运行如你所愿
before((done) => {
fs.stat(utils.pathSetup() + "/ins/", function (err, stats) {
if (!err) {
console.log("success");
} else {
let lclpath = utils.pathSetup();
Loder.add({folderPath: lclpath + "/test/testcontent/ins"});
console.log(err);
}
done();
});
});