![translation](https://cdn.durumis.com/common/trans.png)
Это сообщение переведено AI.
Выбрать язык
Текст, резюмированный ИИ durumis
- Важно избавиться от внешних зависимостей для юнит-тестирования.
- Вы можете легко имитировать Prisma Client Prisma ORM с помощью пакета jest-mock-extended.
- Написание юнит-тестов стало удобнее после имитации.
Как правило, модульные тесты проводятся в изолированной среде, поэтому рекомендуется устранить внешние зависимости, такие как сетевой ввод-вывод или базы данных, которые могут повлиять на результаты тестирования.
В этом проекте я использую Prisma ORM в своем тестовом проекте, поэтому я хотел бы записать, как просто имитировать Prisma Client для модульного тестирования.
Установка пакета jest-mock-extended
В официальной документации Prisma рекомендуется установить пакет с помощью этой команды.
Имитация Prisma Client
describe('UserService', () => {
let service: UserService;
let prismaMock: DeepMockProxy;
beforeEach(async () => {
prismaMock = mockDeep();
const module: TestingModule = await Test.createTestingModule({
providers: [
UserService,
{
provide: PrismaService,
useValue: prismaMock,
},
],
}).compile();
service = module.get(UserService);
Пример кода модульного теста
describe('create', () => {
it('При успешном создании пользователя необходимо вернуть информацию о пользователе.', async () => {
// Arrange
const newUser = {
email: 'test@test.com',
password: 'test1234',
};
prismaMock.user.create.mockResolvedValue({
id: 1,
email: 'test@test.com',
password: 'test1234',
});
// Act
const result = await service.create(newUser);
// Assert
expect(result).toEqual({
id: 1,
email: 'test@test.com',
password: 'test1234',
});
});
После имитации тип также поддерживается, что значительно упрощает написание модульных тестов.