![translation](https://cdn.durumis.com/common/trans.png)
Đây là bài viết được dịch bởi AI.
Chọn ngôn ngữ
Văn bản được tóm tắt bởi AI durumis
- Loại bỏ các phụ thuộc bên ngoài là điều quan trọng cho việc kiểm thử đơn vị.
- Bạn có thể dễ dàng mock Prisma Client của Prisma ORM bằng cách sử dụng gói jest-mock-extended.
- Việc mock giúp viết kiểm thử đơn vị dễ dàng hơn.
Theo nguyên tắc, thử nghiệm đơn vị ứng dụng được thực hiện trong trạng thái cách ly, vì vậy nên loại bỏ các phụ thuộc bên ngoài có thể ảnh hưởng đến kết quả thử nghiệm, chẳng hạn như I/O mạng hoặc cơ sở dữ liệu.
Trong dự án đồ chơi này, tôi đã sử dụng Prisma ORM, vì vậy tôi đang viết bài viết này để ghi lại cách tôi đã tìm thấy để mô phỏng Prisma Client một cách đơn giản để thử nghiệm đơn vị.
Cài đặt gói jest-mock-extended
Gói được đề xuất trong tài liệu chính thức của Prisma được cài đặt bằng lệnh trên.
Mô phỏng 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);
Ví dụ mã thử nghiệm đơn vị
describe('create', () => {
it('Nếu tạo người dùng thành công, thông tin người dùng phải được trả về.', async () => {
// Sắp xếp
const newUser = {
email: 'test@test.com',
password: 'test1234',
};
prismaMock.user.create.mockResolvedValue({
id: 1,
email: 'test@test.com',
password: 'test1234',
});
// Hành động
const result = await service.create(newUser);
// Khẳng định
expect(result).toEqual({
id: 1,
email: 'test@test.com',
password: 'test1234',
});
});
Sau khi mô phỏng, kiểu dữ liệu cũng được hỗ trợ, điều này làm cho việc viết thử nghiệm đơn vị trở nên cực kỳ thuận tiện.