这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战
前置条件
安装 Nodejs 环境,(>= 10.13.0, v13 版本除外),此部分网上有很多资料可以参考。
初始化项目
使用 Nest CLI 搭建的项目,操作简单且也提供了开箱即用的Jest框架
1 | bash复制代码# 安装 Nest Cli |
使用 Nest CLI 搭建的项目会创建一个初始项目结构。nestjs框架集成了jest测试框架,测试文件必须以 .spec 或 .test 结尾,测试文件位于与src同级的test目录下。
- app.e2e-spec.ts文件是实现当前程序的端到端(end to end)测试,也可视为系统测试;
- jest-e2e.json为jest配置文件
整个过程结束了, 然后在测试文件中写测试用例。
遇到问题
- Import 路径问题
- 在spec.ts文件中引入模块时,但在执行 jest 时报错,找不到对应的模块,可以使用使用相对路径解决访问,若不是相对路径,单元测试容易导致找不到对应的模块。
1 | python复制代码# 找不到对应模块 |
- 写用例时的describe ,不支持从 “describe”返回 Promise
1 | dart复制代码describe('', ()=> { |
- 覆盖率和测试报告:
jest --coverage
coverageReporters
[array<string | [string, options]>]- Default:
["clover", "json", "lcov", "text"]
- 加入 jest-html-reporter 后报错:
Could not resolve a module for a custom reporter
- 因为未找到 模块,所以一直报错,配置错误,未能找到模块,使用相对路径可解决问题
- 不建议使用 jest-html-report 显示的信息没有jest 自带的覆盖率显示的详细
yarn add jest-html-reporter --dev
- 本地测试时或者只运行某个测试用例时,可以通过
test.only()
方式。此方法适用在当你调试过程中部分方法出问题,可以进行运行这条测试。 - 支持按文件夹模块进行单元测试
- 通过使用:testRegex 属性进行配置
- 单个文件匹配:
"testRegex":"user.controller.spec.ts",
- 对个文件匹配:
"testRegex": ["(user|role).*.spec.ts$"],
- test 文件下对每个新建测试模块,然后在jest-cofing.json 中配置
"testRegex": ["./test/{testModule}/*"],
本文转载自: 掘金