#jestjs #nestjs
Вопрос:
В nestjs тестовый файл (шаблон из cli) имеет Test.createTestingModule
внутреннюю beforeEach
часть, поэтому он воссоздает модуль перед каждым тестом.
например, 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
.
Ответ №1:
Я думаю, это потому, что вам обычно нужно создавать насмешки и шпионов, когда вы хотите выполнять модульные тесты, что неверно в тестах E2E, где вам нужны реальные подключения к базе данных и т. Д.
Если вы определяете свой модуль в Before All, вам нужно создать afterEach, чтобы очистить историю каждого из ваших шпионов и насмешек.
Кроме того, поскольку все в E2E реально, нам действительно потребуется много времени, чтобы повторно инициализировать все модули и соединения для каждого теста.