![translation](https://cdn.durumis.com/common/trans.png)
นี่คือโพสต์ที่แปลด้วย AI
การจำลอง Prisma Client สำหรับการทดสอบหน่วยใน NestJS
- ภาษาที่เขียน: ภาษาเกาหลี
- •
-
ประเทศอ้างอิง: ทุกประเทศ
- •
- เทคโนโลยีสารสนเทศ
เลือกภาษา
สรุปโดย AI ของ durumis
- การลบการพึ่งพาภายนอกเป็นสิ่งสำคัญสำหรับการทดสอบหน่วย
- คุณสามารถจำลอง Prisma Client ของ Prisma ORM ได้อย่างง่ายดายโดยใช้แพ็คเกจ jest-mock-extended
- การเขียนการทดสอบหน่วยสะดวกขึ้นหลังจากการจำลอง
โดยหลักการแล้ว การทดสอบหน่วยของแอปพลิเคชันควรดำเนินการในสภาพแวดล้อมที่แยกต่างหาก ดังนั้นจึงควรลบการพึ่งพาภายนอก เช่น I/O ของเครือข่าย หรือฐานข้อมูล ซึ่งอาจส่งผลต่อผลลัพธ์ของการทดสอบ
ในโครงการนี้ ฉันได้ใช้ 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',
});
});
หลังจากการจำลอง การสนับสนุนประเภทจะทำให้การเขียนการทดสอบหน่วยง่ายขึ้นมาก