Test Isolation
Each test must be independent.
Principles
- Fresh database: Each test gets clean database state
- No shared state: Tests don't depend on execution order
- Setup/teardown: Use
beforeAll/afterEachappropriately
Example
describe("FundService", () => {
let services: DomainServices;
beforeAll(async () => {
const db = await getTestDB(); // Fresh DB
services = createDomainServices({ db, env: {} as Env });
});
it("test 1", async () => {
// Independent test
});
it("test 2", async () => {
// Another independent test
});
});