
به وبلاگ عالی دیگری از مهندسان DEV IT ما خوش آمدید. امروز ما در مورد روند اجرای یک توسعه که توسط آزمایشات با Mocha و Chai در Node JS هدایت می شود صحبت خواهیم کرد. بیا شروع کنیم.
توسعه تست محور (TDD) چیست؟
این فرآیندی است که در آن ابتدا تست تک خود را می نویسید، نحوه شکست آن را مشاهده می کنید و سپس در حین گذراندن آزمون، کد لازم را در ماژولی که ایجاد می کنید پیاده سازی می کنید. این است!
چگونه باید انجام شود؟
- تست های واحد باید خاص باشند و باید مؤلفه ها و الگوریتم های خاصی از کدی را که می خواهید آزمایش کنید، آزمایش کنند
- داده های مورد استفاده در تست باید ثابت یا متغیر باشند و نباید توسط فراخوانی های API خارجی تغییر داده شوند. به عنوان مثال، باید انتظار یک نتیجه خاص را داشت
هنگامی که تست های ماژولار خود را نوشتید و کد آن ها را پیاده سازی کردید، اگر همه قبول شوند، آماده اید!
تست یکی از مراحل اصلی در چرخه عمر توسعه نرم افزار (SDLC) قبل از استقرار و استفاده محصول نهایی است. انواع مختلفی از تست ها برای اطمینان از کیفیت و اطمینان بر روی محصول انجام می شود، مانند تست واحد. فریمورکهای محبوبی وجود دارند که میتوانند اسکریپتها را آزمایش کنند، بستههای آزمایشی را پشتیبانی کنند و نتایج آزمایش را پر کنند.
موکا و چای چیست؟
Mocha یکی از محبوبترین و پرکاربردترین فریم ورکهای تست جاوا اسکریپت است که میتواند روی Node.js اجرا شود و گزارشهای آزمایشی دقیق و ردیابی پشتهای را برای استثناهای کشف نشده ارائه دهد. روش دیگر، Chai یک کتابخانه بیانیه است که می تواند در ارتباط با هر چارچوب تست جاوا اسکریپت استفاده شود.
چای کتابخانه ای از ادعاها است. جعبه ابزار Chai رابط های Should Expect و Assert را فراهم می کند، روشی خوانا و گویا برای ایجاد تست بعد از BDD.
سخت: –
به عنوان آخرین پارامتر، می توانید یک پیام اضافی ارائه دهید که به عنوان یک پیام خطا ظاهر می شود.
من انتظار دارم: –
با Expect، چای سبک BDD را نشان می دهد. در نتیجه، کاربران می توانند عبارات را به زبان طبیعی متصل کنند.
بیایید نگاهی به نحوه عملکرد آن با راه اندازی یک آزمایش ساده در یک برنامه گره بیندازیم
1 بیایید با ایجاد یک پروژه گره با “npm init” شروع کنیم. سپس بیایید وابستگی های mocha و chai را با استفاده از دستور “npm install mocha chai” نصب کنیم.
2. اکنون در package.json باید “mocha” را به کلید تست شی اسکریپت اضافه کنید و پوشه ای به نام tests ایجاد کنید تا تست های خود را جداگانه مدیریت کنید تا بتوانید تمام فایل های تست مورد نیاز برای اجرای تست های خود را در اینجا ایجاد کنید.
3. موکا از قلاب ها برای سازماندهی ساختار خود استفاده می کند. ما اکنون برخی از ویژگی های اساسی را فهرست کرده ایم.
توصیف کردن (): برای گروه بندی استفاده می شود که می توانید آنقدر عمیق سرمایه گذاری کنید.
سپس (): این مورد آزمایشی است.
قبل از (): این یک قلاب اعدام قبل از اولین آن () یا توصیف ();
قبل از هر (): این یک قلاب است که قبل از هر آن اجرا می شود () یا توصیف ();
بعد از (): این قلاب اجرای پس از آن است () یا توصیف ();
بعد از هر (): این یک قلاب است که بعد از هر آن اجرا می شود () یا توصیف ();
Describe () تابعی است که شامل مجموعه ای از تست ها می شود یا می توانید آن را مجموعه ای از تست ها نیز بنامید. این دو پارامتر دارد، اولی یک نام معنیدار است که آنچه را که روش انجام میدهد توصیف میکند، و دومی یک تابع توصیف است که اساساً شامل یک یا چند تست است.
این () تابعی است که شامل محتویات و مراحل آزمایش واقعی است. همچنین دارای دو پارامتر است: نام آزمون و تابعی که حاوی محتوا است.
4. یک فایل افزودنی آزمایشی در پوشه تست، مثلا test.js، با نامی که دوست دارید ایجاد کنید. کد زیر را در فایل قرار دهید.
const chai = require('chai') const expect = chai.expect describe(Math Operation, () => { describe('Addition', () => { it('1 + 1 should be equals to 2', () => { expect(1+1).to.equal(2) }) }) })
5. با عملیات ریاضی می توانید تمام توابع توضیح فرزند را که عملیات را با موارد تست انجام می دهند، گروه بندی کنید. آن را از ترمینال با استفاده از دستور “npm run test” اجرا کنید که تمام تست های شما را انجام می دهد.
6. اگر 1 + 2 را به جای 1 + 1 در حالت انتظار قرار دهید، نتیجه آن 3 خواهد بود، بنابراین برابر با 3 نخواهد بود، بنابراین در آزمون مردود می شود. سعی کنید 1 + 2 را به جای 1 + 1 در حالت انتظار قرار دهید، سپس این به 3 منجر می شود، بنابراین از آزمون عبور نمی کند.
خروجی نمونه، آزمون گذرانده شده: –

نمونه آزمون شکست خورده اولیه: –

7. بیایید چند عملیات مورد آزمایشی دیگر را در یک عملیات ریاضی اضافه کنیم.
describe('Subtraction', () => { it('1 - 1 should be equals to 0', () => { expect(1-1).to.equal(0) }) }) describe('Multiplication', () => { it('1 * 1 should be equals to 1', () => { expect(1 * 1).to.equal(1) }) }) describe('Division', () => { it('1 / 1 should be equals to 1', () => { expect(1 / 1).to.equal(1) }) })
8. دوباره بررسی کنید، همانطور که دفعه قبل انجام دادید، و خط فرمان تعداد موارد گذشته یا ناموفق را به شما نشان می دهد. شما می توانید موارد را بر اساس نیاز خود سفارشی کنید، به عنوان مثال خروجی باید یک عدد مثبت باشد یا صفر نباشد.
خروجی نمونه: –

9. مستندات رسمی mochajs.org می تواند جزئیات بیشتری را در اختیار شما قرار دهد و به شما در رسیدن به هدفتان کمک کند.
نتیجه
با روش توسعه مبتنی بر آزمایش که در بالا توضیح داده شد، زمان بسیار آسانتری برای آزمایش برنامههای Node خود خواهید داشت. اگر در مراحل ذکر شده در بالا با مشکل مواجه شدید، لطفاً در نظرات زیر دریغ نکنید.
انتشارات راهنمای مبتدیان: توسعه مبتنی بر آزمایش (TDD) با موکا و چای (با استفاده از Node Js) برای اولین بار در مجله DEV IT ظاهر شد.