Supertest · NestJS Validation และ Error
ValidationPipe ใน E2E App
เปิด validation pipeline ให้ test ใกล้ production runtime
ValidationPipe ต้องอยู่ใน E2E app
ถ้า production เปิด `ValidationPipe` แต่ E2E app ไม่เปิด test อาจผ่านด้วย payload ที่ระบบจริงจะ reject การเตรียม app จึงเป็นส่วนหนึ่งของ behavior ที่ต้องทดสอบ ไม่ใช่ boilerplate ที่ตัดทิ้งได้
เปิด ValidationPipeTS
ใช้ options ให้ตรงกับ application bootstrap ที่ต้องการจำลอง
options เปลี่ยน request behavior
| option | ผลต่อ input | สิ่งที่ E2E ตรวจได้ |
|---|---|---|
| transform | แปลงค่าตาม DTO/type ที่กำหนด | query หรือ param ถูกส่งต่อด้วยชนิดที่ถูก |
| whitelist | ตัด property ที่ไม่อยู่ใน DTO | extra field ไม่ไหลเข้า application |
| forbidNonWhitelisted | เปลี่ยน extra field เป็น error | client ได้ 400 แทนการถูกตัดเงียบ |
i
ใช้ setup เดียวกับ runtime
อย่าเพิ่มหรือเอา option ออกใน test เพียงเพื่อให้ตัวอย่างผ่าน เพราะจะทำให้ test อธิบาย behavior ผิด