虽然开玩笑地编写集成测试,但我想通过以下方式重现我在摩卡中实现的相同行为:
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在其他测试套件之后运行?
答案 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__
在测试中无法访问。