برای یک اپلیکیشن ساده Node.js/Express که مسیر POST /todos برای اضافهکردن یک تسک و GET /todos برای دریافت همه تسکها دارد، یک تست یکپارچه (integration test) با استفاده از Jest و Supertest بنویس که ابتدا یک تسک ارسال کند و سپس با فراخوانی GET نتیجهی اضافهشدن را تأیید کند.
3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:21برای حل، از Jest بهعنوان فریمورک تست و Supertest برای فراخوانی HTTP استفاده کنید؛ اپلیکیشن Express را طوری بنویسید که فایل app را اکسپورت کند (نه listen داخل آن) تا تستها بتوانند آن را mount کنند. برای ایزوله نگه داشتن دیتا از mongodb-memory-server یا یک دیتابیس تستی استفاده کنید؛ در قبل از تستها اتصال به دیتابیس را برقرار کنید و در بعد از تستها آن را ببندید. در تست، با Supertest ابتدا POST /todos با بدنه موردنظر بفرستید و وضعیت و پاسخ را بررسی کنید، سپس GET /todos بگیرید و بررسی کنید که تسک ارسالشده در لیست وجود دارد؛ نکات مفید: از beforeAll/afterAll برای راهاندازی و پاکسازی استفاده کنید، سرور را در فایل اپ اکسپورت کنید تا تست بتواند بدون باز کردن پورت اضافی کار کند و از assertions ساده مانند status code و مقادیر فیلدها استفاده کنید.
برای تست یکپارچه، اپ را طوری بنویس که خروجیاش فقط یک Express app باشد و در فایل جداگانه listen نکند تا Jest بتواند آن را mount کند. از mongodb-memory-server استفاده کن و با beforeAll اتصال به دیتابیس را برقرار و با afterAll قطع کن تا دادههای تستی تمیز بمانند. در تست با Supertest ابتدا POST /todos را با بدنهٔ نمونه بفرست و وضعیت پاسخ و محتوای آن را بررسی کن، سپس GET /todos بگیر و وجود تسک اضافهشده را تأیید کن. فراموش نکن که بین تستها دیتابیس را پاکسازی یا بازنشانی کنی تا نتایج بهدرستی بماند.
گزارش