برای دریافت بهترین عملکرد آزمایشی که Node ارائه می دهد، این بهترین بسته های کلاس را بررسی کنید.
تست بخش مهمی از هر فرآیند توسعه نرم افزار است زیرا قبل از ارسال کد شما، مسائل و آسیب پذیری های امنیتی را شناسایی می کند.
اکوسیستم Node.js بستههای آزمایشی مختلفی را ارائه میکند تا به شما کمک کند از قابلیت اطمینان، کیفیت و عملکرد برنامههایتان اطمینان حاصل کنید. در اینجا چهار بسته آزمایشی برتر در اکوسیستم Node.js را بررسی خواهید کرد.
1. شوخی
Jest یک چارچوب آزمایشی است که یک راه حل آزمایشی آسان و جامع برای پایگاه های کد جاوا اسکریپت ارائه می دهد. Jest که توسط Meta توسعه یافته است، ویژگی هایی مانند اجرای تست موازی، پوشش کد، تطبیق های داخلی برای ادعاها، تمسخر و تست عکس فوری را ارائه می دهد که آن را به یک چارچوب تست قدرتمند و همه کاره تبدیل می کند.
با اجرای دستور زیر می توانید Jest را نصب کنید:
npm install --save-dev jest
در اینجا مثالی برای نشان دادن آزمایش با Jest برای تابعی وجود دارد که بررسی می کند آیا یک عدد فرد است:
describe("isOdd", () => {
test("returns true for odd number input", () => {
expect(isOdd(3)).toBe(true);
});
test("returns false for an even number", () => {
expect(isOdd(2)).toBe(false);
});
test("throws an error for non-integer input", () => {
expect(() => {
isOdd(3.5);
}).toThrow("Input is not an integer");
});
test("throws an error for non-numeric input", () => {
expect(() => {
isOdd("3");
}).toThrow("Input is not a number");
});
});
وقتی مجموعه آزمایشی بالا را اجرا میکنید، Jest هر آزمایش جداگانه را اجرا میکند و خروجی تابع را با مقدار مورد انتظار با استفاده از تابع expect و تطبیقهای toBe و toThrow مقایسه میکند. اگر خروجی مطابق انتظار نباشد، Jest یک آزمایش ناموفق را گزارش میکند و یک پیام خطای دقیق ارائه میکند.
Jest همچنین دارای پشتیبانی داخلی برای اجرای عملکردهای تمسخر آمیز است. علاوه بر این، دارای یک انجمن فعال بزرگ با به روز رسانی و بهبودهای منظم است.
2. موکا
موکا یک چارچوب تست جاوا اسکریپت است که راه حلی انعطاف پذیر و قابل توسعه برای نوشتن تست برای برنامه های جاوا اسکریپت ارائه می دهد. این یک نحو ساده و حداقلی برای تعریف تست ها ارائه می دهد.
از چندین کتابخانه ادعایی مانند ماژول ادعای داخلی Node.js، Chai و Should.js و غیره پشتیبانی می کند. اگر انعطاف پذیری را در تنظیمات تست خود ترجیح می دهید، این پشتیبانی از چندین کتابخانه ادعایی، Mocha را به گزینه ایده آل تبدیل می کند.
با اجرای دستور زیر می توانید Mocha را نصب کنید:
npm install mocha
در اینجا مثالی برای نشان دادن آزمایش با Mocha و ماژول ادعای Node.js برای تابعی است که مجموع دو عدد را برمی گرداند:
const assert = require('assert');
describe('addNumbers', function() {
it('Add two positive numbers', function() {
const result = addNumbers(3, 5);
assert.strictEqual(result, 8);
});
it('Add a positive and a negative number', function() {
const result = addNumbers(3, -5);
assert.strictEqual(result, -2);
});
});
وقتی تست بالا را اجرا می کنید، موکا هر تست جداگانه را در بلوک های آن اجرا می کند. برای هر تست، Mocha کدی را در تابع تست اجرا می کند که تابع addNumbers را با مقادیر ورودی خاص فراخوانی می کند و سپس از ماژول assert برای مقایسه خروجی واقعی تابع با خروجی مورد انتظار استفاده می کند. اگر آزمایش با شکست مواجه شود، موکا نتیجه را به عنوان یک شکست گزارش می کند و اطلاعاتی در مورد مقادیر خروجی مورد انتظار و واقعی ارائه می دهد.
یکی از مزیتهای اصلی Mocha انعطافپذیری آن است، زیرا به شما امکان میدهد کتابخانههای ادعایی، گزارشگران و سایر پیکربندیهای خود را با توجه به نیاز خود انتخاب کنید. با این حال، Mocha برای ویژگیهایی مانند تمسخر و آزمایش عکس فوری به تنظیمات اضافی نیاز دارد، زیرا آنها را خارج از جعبه شامل نمیشود. در مقایسه با Jest، Mocha ممکن است برای دستیابی به ویژگیهای مشابه به پیکربندی و تنظیمات بیشتری نیاز داشته باشد.
3. آوا
Ava یک چارچوب تست جاوا اسکریپت است که بر عملکرد و همزمانی تمرکز دارد. این برای اجرای همزمان تست ها طراحی شده است که زمان اجرای تست را سریعتر می دهد. Ava همچنین دارای یک تست اجراکننده داخلی و کتابخانه ادعایی است که آن را به یک راه حل مستقل برای آزمایش برنامه های جاوا اسکریپت تبدیل می کند.
با اجرای دستور زیر می توانید Ava را نصب کنید:
npm install --save-dev ava
در اینجا یک مثال برای نشان دادن آزمایش با Ava برای تابعی است که مجموع دو عدد را برمی گرداند:
import test from 'ava';
test('addNumbers adds two positive numbers', t => {
const result = addNumbers(3, 5);
t.is(result, 8);
});
test('addNumbers adds a positive and a negative number', t => {
const result = addNumbers(3, -5);
t.is(result, -2);
});
وقتی این تست ها را با استفاده از Ava اجرا می کنید، هر تست را اجرا می کند و نتایج را به کنسول گزارش می دهد. در صورت قبولی تمامی تست ها، آوا گزارش می دهد که تمام تست ها قبول شده اند. در صورت عدم موفقیت هر آزمایشی، آوا گزارش میکند که کدام تستها ناموفق بودهاند و اطلاعاتی در مورد مقادیر خروجی مورد انتظار و واقعی ارائه میدهد.
برخی از مزایای آوا عبارتند از تمرکز آن بر عملکرد و همزمانی، به خصوص در پروژههایی که تعداد تستها زیاد است. با این حال، آوا ممکن است منحنی یادگیری تندتری برای توسعه دهندگانی داشته باشد که با نحو مدرن جاوا اسکریپت تازه کار هستند، زیرا از ماژول های ES و دیگر ویژگی های مدرن جاوا اسکریپت استفاده می کند.
4. یاس
Jasmine یک چارچوب آزمایشی توسعه رفتار محور (BDD) برای برنامه های جاوا اسکریپت است. این یک نحو تمیز و گویا برای نوشتن تستهایی ارائه میکند که بسیار شبیه به زبان طبیعی است و درک و نوشتن تستها را برای افراد فنی و غیر فنی آسان میکند. Jasmine همچنین دارای یک تست اجراکننده داخلی و کتابخانه ادعایی است که آن را به یک راه حل جامع برای آزمایش برنامه های جاوا اسکریپت تبدیل می کند.
با اجرای این دستور می توانید Jasmine را نصب کنید:
npm install --save-dev jasmine
سپس، شما باید Jasmine را در دایرکتوری کاری خود با اجرای دستور زیر مقداردهی اولیه کنید:
jasmine init
دستور بالا یک پوشه پشتیبانی در پوشه مشخصات (Tests) شما ایجاد می کند. این پوشه حاوی فایل jasmine.json است که حاوی تنظیمات پیکربندی Jasmine است.
در اینجا مثالی برای نشان دادن آزمایش با Jasmine برای تابعی است که زوج بودن یک عدد را بررسی می کند:
describe('isEven', function() {
it('Return true for an even number', function() {
const result = isEven(4);
expect(result).toBe(true);
});
it('Return false for an odd number', function() {
const result = isEven(5);
expect(result).toBe(false);
});
});
وقتی تست های بالا را با استفاده از Jasmine اجرا می کنید، Jasmine هر تست را اجرا می کند و نتایج را به کنسول گزارش می دهد. در صورت قبولی تمام تست ها، یاس گزارش می دهد که تمام تست ها قبول شده اند. اگر هر آزمایشی با شکست مواجه شود، Jasmine گزارش می کند که کدام آزمایش ناموفق بوده است و اطلاعاتی در مورد مقادیر خروجی مورد انتظار و واقعی ارائه می دهد.
برخی از مزایای Jasmine عبارتند از نحو BDD آن، که تست ها را برای انسان قابل خواندن تر می کند و به بهبود ارتباط بین اعضای فنی و غیر فنی تیم کمک می کند. با این حال، Jasmine ممکن است برای توسعه دهندگانی که در مفاهیم BDD تازه کار هستند، منحنی یادگیری تندتری داشته باشد. با این حال، شایان ذکر است که در مقایسه با سایر چارچوب های آزمایشی، Jasmine برای راه اندازی به تنظیمات زیادی نیاز دارد.
انتخاب چارچوب تست
انتخاب یک چارچوب آزمایشی برای پروژه Node.js مستلزم در نظر گرفتن دقیق چندین فاکتور از جمله رویکرد تست، سهولت استفاده، پشتیبانی جامعه، ادغام با ابزارهای دیگر و عملکرد است. اما در نهایت، انتخاب به پروژه شما بستگی دارد، زیرا برخی از بسته ها برای پروژه های خاص مناسب تر از سایرین هستند.