跳到主要内容

testing

测试与覆盖率

单元/集成/端到端测试与覆盖率度量,结合 Mock/容器化依赖。更多实践见 JavaScript 章节的测试与覆盖率(Jest/Vitest)

要点

  • 工具:Jest/Vitest、Playwright、Supertest;
  • 隔离:Testcontainers/Docker Compose;
  • 覆盖率:阈值设定、变更范围测试;
  • 并发与资源:Worker 数、内存与端口管理。

示例:HTTP 接口测试(Supertest + Jest)

import request from 'supertest';
import { app } from '../src/app';

it('GET /ping', async () => {
await request(app).get('/ping').expect(200).expect({ pong: 'it works' });
});

示例:Testcontainers 启动 PostgreSQL

import { PostgreSqlContainer } from '@testcontainers/postgresql';

let container;
beforeAll(async () => {
container = await new PostgreSqlContainer().start();
process.env.DATABASE_URL = container.getConnectionUri();
});
afterAll(async () => container.stop());

策略:E2E 覆盖关键路径,契约测试保证服务间协议稳定;其余以集成测试为主、单测为基础。