dco*_*ran 12 unit-testing node.js jasmine reactjs jestjs
在Jest中是否可以运行在所有其他测试完成后运行的清理或拆卸任务?类似于setupFiles允许在任何测试运行之前设置任务的方式.无论测试是否有任何错误,如果这也可以运行,则可以获得奖励积分.
放置afterAll(() => {})
在文件的顶层(在任何描述函数之外)仅在该特定文件的测试完成后运行.
用例是我有很多测试文件可以在开发数据库中创建用户,我不想让每个测试文件负责清理和删除用户.编写测试时也会发生错误,因此如果发生清理而不考虑哪种错误更可取.
Mic*_*ała 15
setupFiles
在每个测试套件之前都有一个兄弟钩子,但是在你的测试运行器(默认情况下是Jasmine2)初始化全局环境之后.
它被调用setupFilesAfterEnv
,它需要一个字符串作为参数,而不是像中的数组setup.js
.
像这样使用它:
{
"setupFilesAfterEnv": ["<rootDir>/setup.js"]
}
Run Code Online (Sandbox Code Playgroud)
示例setup.js:
beforeAll(() => console.log('beforeAll'));
afterAll(() => console.log('afterAll'));
Run Code Online (Sandbox Code Playgroud)
beforeAll
不需要出口任何东西.它将在每个测试套件(每个测试文件)之前执行.因为测试运行器已经初始化,所以全局函数就像在常规测试文件中一样afterAll
,setupFiles
并且在范围内,因此您可以根据需要调用它们.
Non*_*ame 14
要在所有测试套件完成后执行一些任务,请使用globalTeardown。例子:
在 package.json 中:
{
"jest": {
"globalTeardown": "<rootDir>/teardownJest.js"
},
}
Run Code Online (Sandbox Code Playgroud)
在teardownJest.js中:
const teardown = async () => {
console.log('called after all test suites');
}
module.exports = teardown;
Run Code Online (Sandbox Code Playgroud)
请记住,jest 从头开始为每个测试套件和拆卸文件导入每个模块。来自官方文档:
默认情况下,每个测试文件都有自己独立的模块注册表
因此,您不能为每个测试套件或拆卸文件共享相同的数据库模块实例。因此,如果您想在所有测试套件之后关闭数据库连接,此方法将不起作用
在jest.config.js
:
module.exports = {
// ...
setupFilesAfterEnv: [
"./test/setup.js",
// can have more setup files here
],
}
Run Code Online (Sandbox Code Playgroud)
在./test/setup.js
:
afterAll(() => { // or: afterAll(async () => { }); to support await calls
// Cleanup logic
});
Run Code Online (Sandbox Code Playgroud)
笔记:
归档时间: |
|
查看次数: |
10495 次 |
最近记录: |