Jestjs 为什么nestjs单元测试在beforeach而不是beforeAll中创建测试模块?

Jestjs 为什么nestjs单元测试在beforeach而不是beforeAll中创建测试模块?,jestjs,nestjs,Jestjs,Nestjs,在nestjs中,测试文件(cli中的模板)在每个测试之前都有test.createTestingModule内部beforeach,因此它会在每次测试之前重新创建模块 e、 g.foo.service.spec.ts import { Test, TestingModule } from '@nestjs/testing'; import { FooService } from './foo.service'; describe('FooService', () => { let

在nestjs中,测试文件(cli中的模板)在每个测试之前都有
test.createTestingModule
内部
beforeach
,因此它会在每次测试之前重新创建模块

e、 g.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();
  });
});
从'@nestjs/testing'导入{Test,TestingModule};
从“/foo.service”导入{FooService};
描述('FooService',()=>{
让服务:餐饮服务;
beforeach(异步()=>{
常量模块:TestingModule=等待测试。createTestingModule({
提供者:[FooService],
}).compile();
service=module.get(FooService);
});
它('应该定义',()=>{
expect(service.toBeDefined();
});
});
但是为什么它在每个之前的
中,而不是在所有
之前的

是否有任何理由在每次
之前将其置于
中?也许会引起问题


我看到在e2e测试中,应用程序是在
之前
中创建的,因此我不确定为什么在每个
之前
中创建单元测试,我认为这是因为当您想要执行单元测试时,通常需要创建模拟和间谍,而在需要真正数据库连接的e2e测试中,这是不正确的,……等等

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

另外,由于E2E中的所有内容都是真实的,因此,如果我们要为每个测试重新初始化所有模块和连接,则确实需要很长时间