【发布时间】:2020-11-19 22:26:51
【问题描述】:
我是 NestJS 新手,目前正在学习 NestJS 测试。
beforeEach 和 createTestingModule().compile() 和一些 module.get() 会大大增加测试执行,这是一个常见的问题吗?
我有一个虚拟的 expect(true) 测试需要 6 秒才能完成,而有一个 beforeEach 只需要 1 秒(而这个虚拟测试的 1 秒似乎仍然很多)...
当您在监视模式下运行测试时,这非常烦人,因为这需要很多时间,而我仍然只有很少的测试。
我找不到与 NestJS 的这个问题相关的任何内容,所以我可能做错了什么,但我不知道是什么。
我确实尝试使用一些开玩笑的标志,例如 --runInBand 或 --maxWorkers=4,但没有成功。
--
测试的应用程序实际上是通过教程创建的应用程序,这方面没有什么特别需要注意的。
这是我的tasks.service.spec.ts 文件(这是我唯一的测试文件)。如果有帮助,我可以提供一个 Github repo。
import { Test } from '@nestjs/testing';
import { TaskRepository } from './task.repository';
import { TasksService } from './tasks.service';
const mockTaskRepository = () => ({});
describe('tasks.service', () => {
let tasksService;
let taskRepository;
beforeEach(async () => {
const module = await Test.createTestingModule({
providers: [
TasksService,
{ provide: TaskRepository, useFactory: mockTaskRepository },
],
}).compile();
tasksService = await module.get(TasksService);
taskRepository = await module.get(TaskRepository);
});
describe('Test', () => {
it('pass', () => {
expect(true);
});
});
});
这是我在package.json中的笑话设置
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "src",
"testRegex": ".spec.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"coverageDirectory": "../coverage",
"testEnvironment": "node",
"moduleNameMapper": {
"^src/(.*)$": "<rootDir>/$1"
}
}
这是带有 beforeEach 评论和没有 beforeEach 评论的结果
# With beforeEach
PASS src/tasks/tasks.service.spec.ts (7.214 s)
tasks.service
Test
✓ pass (10 ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 7.241 s
Ran all test suites.
Watch Usage: Press w to show more.
# Without beforeEach
PASS src/tasks/tasks.service.spec.ts
tasks.service
Test
✓ pass (2 ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 1.561 s, estimated 8 s
Ran all test suites.
Watch Usage: Press w to show more.
欢迎任何提示或帮助 :-) 谢谢!
【问题讨论】: