开玩笑地进行“顶级”测试

时间:2020-09-30 10:40:17

标签: node.js jestjs

虽然开玩笑地编写集成测试,但我想通过以下方式重现我在摩卡中实现的相同行为: mocha -r ts-node/register tests/integration/topLevelTest.test.ts 'tests/integration/**/*.test.ts'

topLevelTest.test.ts:

let importantVariable;

describe("should do something with my variable", () => {
  importantVariable = returnSomethingImportant();

  it("should important variable exists", () => {
    should.exist(importantVariable)
  })
})

after(() => {
  importantVariable.cleanUp()
})

行为很简单:首先执行topLevelTest描述,然后自己执行其他测试套件,最后执行topLevelTest中的之后

为了开玩笑地重写它,我写了一些非常相似的东西。唯一的不同是,我使用了 afterAll 而不是 after 。结果是:首先执行topLevelTest描述,然后执行 afterAll ,然后执行其他测试套件。是否可以让AfterAll在其他测试套件之后运行?

1 个答案:

答案 0 :(得分:0)

这是安装文件的用途,更具体地说是setupFilesAfterEnv,因为Jest环境已经在那里可用全局变量进行了初始化。

未与afterAll分组的顶级describe适用于当前测试套件中的所有测试。由于Jest测试在不同的线程中并行运行(除非指定了runInBand选项,所以它显然不会影响其他测试套件。

如果如果安装失败而不必进行测试并且不需要来自安装程序的数据,请使用globalSetup和globalTeardown配置选项。这不是测试,但主要区别在于describe和单独的test块不可用。全局期望不可用,但可以导入,如果设置失败,则会导致有意义的错误:

// setup.js
let expect = require('expect');
module.exports = async () => {
  let server = ...;
  expect(server)...;
  global.__MYSERVER__ = server;
};

// teardown.js
module.exports = async function () {
  // close __MYSERVER__
};

由于全局设置和拆卸在父进程中运行,因此__MYSERVER__在测试中无法访问。