06 测试 Demo
对应文档: 06 工程化 - 单元测试
Demo 目录: practice/06-testing
运行方式
bash
cd practice/06-testing
npm install
npm test # 单元测试(13 个)
npm run test:e2e # e2e 测试(9 个)
npm run test:cov # 覆盖率报告演示内容
单元测试(src/posts/*.spec.ts)
- Service 测试:Mock Repository,不依赖数据库
findAll/findOne/create/update/remove- 验证
NotFoundException正确抛出 - 验证方法调用顺序(先 findOne 再 update)
- Controller 测试:Mock Service,测试路由逻辑
e2e 测试(test/posts.e2e-spec.ts)
- 启动真实 NestJS 应用,用
supertest发 HTTP 请求 - 测试完整 CRUD 流程(含状态码验证)
- 测试数据隔离(内存 Repository,每次测试独立状态)
关键设计
typescript
// 用 useValue 注入 Mock,不启动真实数据库
providers: [{ provide: PostsService, useValue: mockPostsService }]