我正在通过 Jest 和 supertest 为新 API 编写大量测试。在运行测试之前,我正在设置一个测试数据库并用用户填充它:
jest --forceExit --config src/utils/testing/jest.config.js
Run Code Online (Sandbox Code Playgroud)
module.exports = {
rootDir: process.cwd(),
// Sets up testing database with users
globalSetup: './src/utils/testing/jest.setup.js',
// Ensures connection to database for all test suites
setupTestFrameworkScriptFile: './src/utils/testing/jest.db.js',
}
Run Code Online (Sandbox Code Playgroud)
所以我从一些用户的数据库开始进行测试。问题是这样的:
我的一些测试依赖于其他测试的成功。在这个应用程序中,用户可以上传图像,并将它们分组。所以我的分组端点套件取决于我的图像上传套件的成功,等等。
我很清楚很多人可能会说这是不好的做法,并且测试不应该依赖于其他测试。话虽如此,我真的宁愿通过以下方式保留所有测试supertest,而不是进入依赖注入等。我不想精心设置测试条件(例如,在运行之前人为地创建一堆用户图像)测试),因为:(1)这只是逻辑的重复,并且(2)它增加了某些破坏的可能性。
有什么办法可以将 Jest Suite 分组吗?例如,要按顺序运行套件:
jest run creationSuite
jest run modificationSuite
Run Code Online (Sandbox Code Playgroud)
这样,我所有的“creationSuite”测试都可以同时运行,并且所有测试的成功都会触发“modificationSuite”以快速失败的方式运行等。
或者,在测试套件内部指定对其他测试套件的依赖会很棒:
describe('Grouping endpoint', () => {
// Somehow define dependencies
this.dependsOn(uploadSuite)
Run Code Online (Sandbox Code Playgroud)