Mocha在beforeEach之前按未预期的顺序嵌套



我有一个使用Mocha的测试套件,带有嵌套的describe和beforeEach块。当我运行测试时,我希望外部的beforeEach在内部的beforeEach 之前运行

这是的一些示例代码

const expect = require('chai').expect
describe('Outer describe', async () => {
beforeEach(() => {
console.log('Outer beforeEach is running!!!!');
});
afterEach(() => {
console.log('Outer afterEach is running!!!!');
});
it('Outter test', async () => {
expect(true).to.be.true;
});
describe('Inner describe', () => {
before(() => {
console.log('Inner beforeEach is running!!!!');
});
after(() => {
console.log('Inner afterEach is running!!!!');
});
// only used to simplify the output
it.only('Inner test', async () => {
expect(true).to.be.true;
});
})
});

他是运行上述测试的输出

Outer describe
Inner describe
Inner beforeEach is running!!!!
Outer beforeEach is running!!!!
✓ Inner test
Outer afterEach is running!!!!
Inner afterEach is running!!!!

我所期待的是

Outer describe
Inner describe
Outer beforeEach is running!!!!
Inner beforeEach is running!!!!
✓ Inner test
Inner afterEach is running!!!!
Outer afterEach is running!!!!

这是预期的行为吗?我内在的beforeEach依赖于外在的beforeEvery在它之前奔跑,这被认为是糟糕的做法吗?

我正在使用
节点14.11.0
Mocha 8.1.3

输出不如预期的原因是内部描述使用了before而不是beforeEach

before仅在描述块中的所有测试之前运行一次,而beforeEach在描述块的每个测试之前运行。这意味着外部描述的beforeEach需要在内部before之后运行

最新更新