Skip to content

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 }]

NestJS 深度学习体系