我想运行一系列的测试,这些测试建立在以前测试中使用的数据之上。
这是如何通过类似以下内容来实现的:
describe(``,()=>{
let t = true;
it(`test1`,()=>assert(t));
t = false;
it(`test2`,()=>assert(!t));
});它失败了,因为第3行在第4行之后执行。
发布于 2019-03-13 06:34:44
不建议让测试依赖于其他测试设置的状态。作为一个测试套件变得更加复杂,能够使用Mocha的grep选项,或者能够临时使用it.only,这样当你有一个失败的测试时,你可以专注于只运行那个测试,这是非常有用的。但是,如果您的测试依赖于在其之前运行的其他测试才能正常运行,则不能将其隔离。如果您进入调试器并在您所关心的实际测试之前在命中十几次的行上设置断点,这很快就会过时。
在您展示的示例代码中,您可以这样做:
describe(``,()=>{
let t = true;
it(`test1`,()=>assert(t));
it(`test2`,() => {
t = false; // Set the state here.
assert(!t);
});
});在comment中,尼克建议在test1中设置t。我建议在test2中设置它。使用我上面建议的代码,您可以运行mocha --grep test2,或者临时将it(`test2`...更改为it.only(`test2`...,这样您的测试就会运行得很好。
但是,我怀疑您的实际代码比您给出的示例更复杂,并且可能实际上使用了一些重要的代码来设置测试的状态。如果您想将测试设置代码与测试本身分开,您可以这样做:
describe(``,() => {
describe("", () => {
let t;
before(() => {
t = someSubtantialInitialization();
});
it(`test1`, () => ...);
});
describe("", () => {
let t;
before(() => {
t = someOtherSubstantialInitialization();
});
it(`test2`,() => ...);
});
});Mocha有before和beforeEach挂钩,但它没有beforeJustThisOneTest挂钩。通过将测试和钩子放在各自的describe块中,可以将钩子与单个测试关联起来。
https://stackoverflow.com/questions/55130584
复制相似问题