【问题标题】:Why nestjs unit tests create testing module in beforeEach instead of beforeAll?为什么nestjs单元测试在beforeEach而不是beforeAll中创建测试模块?
【发布时间】:2021-06-02 17:44:22
【问题描述】:

在nestjs中,测试文件(来自cli的模板)在beforeEach内有Test.createTestingModule,因此它在每次测试之前重新创建模块。

例如foo.service.spec.ts

import { Test, TestingModule } from '@nestjs/testing';
import { FooService } from './foo.service';

describe('FooService', () => {
  let service: FooService;

  beforeEach(async () => {
    const module: TestingModule = await Test.createTestingModule({
      providers: [FooService],
    }).compile();

    service = module.get<FooService>(FooService);
  });

  it('should be defined', () => {
    expect(service).toBeDefined();
  });
});

但是为什么它在beforeEach而不是beforeAll

有什么理由让它出现在beforeEach 中吗?也许会引起问题?

我看到在e2e测试中,应用程序是在beforeAll中创建的,所以我不确定为什么在beforeEach中创建单元测试。

【问题讨论】:

    标签: jestjs nestjs


    【解决方案1】:

    我认为这是因为当您想要执行单元测试时通常需要创建模拟和间谍,这在您想要真正的数据库连接的 E2E 测试中是不正确的......等等。

    如果您在 BeforeAll 中定义您的模块,那么您需要创建 AfterEach 以清除每个间谍和模拟的历史记录。

    也因为 E2E 中的一切都是真实的,如果我们要为每个测试重新初始化所有模块和连接,确实需要很长时间。

    【讨论】:

      猜你喜欢
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      • 1970-01-01
      • 2021-09-11
      • 2020-06-22
      相关资源
      最近更新 更多