راهنمای تست با Jest برای توسعهدهندگان JavaScript
تست کردن به شما کمک میکند باگها را زودتر پیدا کنید. کیفیت کد را بهبود میبخشد و به شما اجازه میدهد ویژگیهای جدید را بدون از کار انداختن کدهای قدیمی عرضه کنید.
Jest یک ابزار تست محبوب برای JavaScript و Node.js است. این ابزار توسط Meta ساخته شده و با TypeScript، React، Next.js و Express.js سازگاری دارد.
چرا از Jest استفاده کنیم؟
- تنظیمات کمی نیاز دارد.
- برای سرعت بیشتر، تستها را به صورت موازی اجرا میکند.
- شامل ابزارهای mocking است.
- گزارشهای پوشش کد (code coverage) را نمایش میدهد.
- پیامهای خطای واضح ارائه میدهد.
نحوه راهاندازی Jest:
- ایجاد یک پروژه Node.js:
npm init -y - نصب Jest:
npm install --save-dev jest - بهروزرسانی اسکریپتهای package.json برای شامل شدن
"test": "jest" - اجرای تستها با:
npm test
نوشتن یک تست ساده:
ایجاد فایل sum.js:
function sum(a, b) {
return a + b;
}
module.exports = sum;
ایجاد فایل sum.test.js:
const sum = require("./sum");
test("adds two numbers", () => {
expect(sum(2, 3)).toBe(5);
});
ابزارهای ضروری Jest:
- Assertions: از
expect()وtoBe()برای بررسی مقادیر استفاده کنید. - Objects: از
toEqual()برای مقایسه اشیاء یا آرایهها استفاده کنید. - Organization: از
describe()برای گروهبندی تستهای مرتبط استفاده کنید. - Async: Jest توابع async را به طور طبیعی با استفاده از
awaitمدیریت میکند. - Mocks: از
jest.fn()برای شبیهسازی توابع استفاده کنید. این کار با جلوگیری از فراخوانیهای واقعی API یا دسترسی به دیتابیس، سرعت تستها را بالا نگه میدارد. - Hooks: از
beforeEach()وafterEach()برای آمادهسازی یا پاکسازی دادههای تست استفاده کنید.
سنجش موفقیت:
دستور npx jest --coverage را اجرا کنید تا گزارش پوشش خود را ببینید. این گزارش نشان میدهد کدام بخشهای کد شما فاقد تست هستند.
تست کردن APIها:
از Supertest برای تست نقاط انتهایی (endpoints) API استفاده کنید. میتوانید بدون راهاندازی یک سرور واقعی، کدهای وضعیت (status codes) را بررسی کنید.
تست اسنپشات (Snapshot Testing):
در React از matchSnapshot() استفاده کنید. این کار با مقایسه رندرهای فعلی با نسخههای ذخیرهشده، به شما در پیدا کردن تغییرات غیرمنتظره در UI کمک میکند.
بهترین تمرینها:
- تستهایی بنویسید که نتایج را توصیف کنند.
- از تست کردن ساختار داخلی کد خودداری کنید.
- در تستهای واحد (unit tests) از دیتابیسهای واقعی دوری کنید.
- بر پوشش معنادار تمرکز کنید.
تسلط بر Jest به شما کمک میکند تا نرمافزارهای قابل اعتمادی بسازید.