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);
});
});