【问题标题】:Mocha runs nested beforeEach in unexpect orderMocha 以意外的顺序嵌套 beforeEach
【发布时间】:2021-01-08 07:29:49
【问题描述】:

我有一个使用 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 依赖于我的外部 beforeEach 在它之前运行,这被认为是不好的做法吗?

我正在使用
节点 14.11.0
摩卡8.1.3

【问题讨论】:

    标签: node.js mocha.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      • 2021-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多