</>
⌕
Mid #testing#jest#mock

Unit test service NestJS với Test.createTestingModule và mock provider

⚡ Trả lời nhanh

Test.createTestingModule dựng module thu nhỏ chỉ với provider cần test; thay dependency thật bằng mock qua { provide, useValue } hoặc overrideProvider(). Gọi compile() rồi module.get() để lấy instance. E2E dùng createNestApplication kèm supertest.

describe('UsersService', () => {
  let service: UsersService;
  const repo = { findOneBy: jest.fn() };

  beforeEach(async () => {
    const mod = await Test.createTestingModule({
      providers: [
        UsersService,
        { provide: getRepositoryToken(User), useValue: repo },
      ],
    }).compile();
    service = mod.get(UsersService);
  });

  it('ném NotFound khi không có user', async () => {
    repo.findOneBy.mockResolvedValue(null);
    await expect(service.find(1)).rejects.toThrow(NotFoundException);
  });
});
🃏 Ôn bằng flashcard