是否有可能在Jest中运行在所有其他测试完成后运行的清理或拆卸任务?与setupFiles允许在任何测试运行之前设置任务的方式类似。如果无论测试是否有任何错误,也可以运行奖励点。在所有测试运行完毕后进行最后清理
将afterAll(() => {})
置于文件的顶层(在任何描述函数之外)时,只会在完成特定文件的测试后才会运行。
用例是我有很多测试文件将在开发数据库中创建用户,我不希望每个测试文件都负责清理和删除用户。编写测试时也可能发生错误,所以如果清理发生而不管错误是否会更好。
是否有可能在Jest中运行在所有其他测试完成后运行的清理或拆卸任务?与setupFiles允许在任何测试运行之前设置任务的方式类似。如果无论测试是否有任何错误,也可以运行奖励点。在所有测试运行完毕后进行最后清理
将afterAll(() => {})
置于文件的顶层(在任何描述函数之外)时,只会在完成特定文件的测试后才会运行。
用例是我有很多测试文件将在开发数据库中创建用户,我不希望每个测试文件都负责清理和删除用户。编写测试时也可能发生错误,所以如果清理发生而不管错误是否会更好。
有一个setupFiles
的兄弟会在每个测试套件之前启动,但在测试运行器之后(默认为Jasmine2)初始化全局环境。
它被称为setupTestFrameworkScriptFile
它需要一个字符串作为参数,而不是像setupFiles
那样的数组。
使用方法如下:
{
"setupTestFrameworkScriptFile": "<rootDir>/setup.js"
}
例setup.js:
beforeAll(() => console.log('beforeAll'));
afterAll(() => console.log('afterAll'));
setup.js
不需要任何出口。它将在每个测试套件(每个测试文件)之前执行。由于测试运行器已经初始化,所以像beforeAll
和afterAll
这样的全局函数就在您的常规测试文件中,因此您可以随意调用它们。
甜美,这看起来像我需要的!谢谢。 – dcochran
我想每个测试必须对环境完全控制,所以每个测试必须负责其环境。也许你需要的是拥有多个环境,例如一个可以在内存中运行(模拟实现数据库),另一个可以在数据库中运行。 –
你可以在你的测试运行器中添加一个清理命令吗?即如果你正在使用gulp,make,grunt等:'run_your_tests.js; clean_up_database;' – dm03514