【问题标题】:how to run beforeEach before `before` hook如何在`before`钩子之前运行beforeEach
【发布时间】:2021-03-01 13:46:03
【问题描述】:

我有以下代码。

describe("mytest", () => {

   beforeEach(() => {
      console.log("first");
   })

   context("first context", () => {
      before(() => {
         console.log("second");
      })

   })
 
})

我想要实现的是我希望先打印first,然后再打印second。似乎问题出在before 钩子上。 beforeEach 在每个测试用例之前运行,但不在 before 钩子之前。有什么想法吗?

【问题讨论】:

  • before 不应该在所有beforeEach 之前运行吗?你试过打电话给beforeAll吗?
  • 根本没有beforeAll。我想我正在使用摩卡咖啡
  • 我想我正在使用 mocha - 我不确定这是什么意思。摩卡在用还是不用?如果是,为什么问题会提到 Jest?无论如何,这是 XY 问题。这不是 before/beforeAll 的工作方式。如果您有特定的问题要解决,请提出问题而不是不可行的解决方案。

标签: javascript testing jestjs mocha.js


【解决方案1】:

请在您的问题中指定您的 DSL。我假设您使用的是BDD。如果这是 Mocha 单元测试,我不确定这里如何使用 Jest?

为了运行您的套件,您需要实际得到评估的测试。

在内部上下文的情况下,您在调用beforeEach 之前调用before。要撤消您的通话,您可以将 context 中的 before 更改为 beforeEach

let step = 0;

mocha.setup('bdd');
chai.should();

describe("mytest", () => {
  beforeEach(() => {
    console.log(`[before each ${step}] first`);
    step++;
  });

  it('outer', () => {
    [].length.should.equal(0);
  });

  context("first context", () => {
    beforeEach(() => {
      console.log(`[before ${step}] second`);
    });

    it('inner', () => {
      [].length.should.equal(0);
    });
  });
});


mocha.run();
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.2.5/mocha.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.2.5/mocha.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.2.0/chai.js"></script>
<div id="mocha"></div>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-14
    • 2021-09-19
    • 2016-08-13
    • 1970-01-01
    • 2019-11-02
    • 2019-05-21
    • 1970-01-01
    • 2013-12-09
    相关资源
    最近更新 更多