I am writing extensive tests for a new API via jest and supertest. Prior to running the tests, I am setting up a test database and populating it with users:
Test command
jest --forceExit --config src/utils/testing/jest.config.js
jest.config.js
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',
}
So I am starting with a database of some users to test on. The problem is this:
Some of my tests rely upon the success of other tests. In this application, users can upload images, and group them into packs. So my grouping endpoint suite depends upon the success of my image upload suite, and so on.
I am well aware many people might say this is bad practice, and that tests should not rely upon other tests. That being said, I would really rather keep all my tests via supertest
, and not get into dependency injection, etc. I don't want to have to meticulously set up testing conditions (eg creating a bunch of user images artificially before running the tests), because: (1) this is just duplication of logic, and (2) it increases the possibility of something breaking.
Is there any way to group jest suites? Eg to run suites in order:
jest run creationSuite
jest run modificationSuite
This way, all my "creationSuite" tests could be run simultaneously, and success of all would then trigger the "modificationSuite" to run, etc, in a fail-fast manner.
Alternatively, specifying inside a test suite dependencies on other test suites would be great:
describe('Grouping endpoint', () => {
// Somehow define deps
this.dependsOn(uploadSuite)