campaign-experts

آموزش تست کردن برنامه‌های Nodejs با Mocha و Chai و SinonJS - قسمت 1 - آماده‌سازی محیط کار



visibility  
mode_comment   ۰

آموزش تست کردن برنامه‌های Nodejs با Mocha و Chai و SinonJS - قسمت 1 - آماده‌سازی محیط کارنداشتن تست در اپلیکیشن و پروژه‌ها یک سختی و عذاب محسوب میشه چون هر بار که تغییر کوچکی در کدهاتون به وجود میارید، باید تک تک نقاط سایتتون رو بررسی و چک کنید و مطمئن بشید که تغییرات جدید مشکلی در اونا به وجود نیاوردن.

نوشتن تست برای بیشتر افراد کار سختی به حساب میاد ولی تست برای پروژه نیاز هست و به اونا نیاز داریم.

چرا باید از تست اتوماتیک استفاده کنیم؟ با داشتن این امکان دیگه نیاز نیست که بصورت دستی بعد از هر تغییر کوچک و بزرگ کل سایت رو تست کنیم و ببینیم که همه چی کار میکنه یا خیر. اگر کدهای جدید مشکلی برای کدهای قدیمی به وجود بیارند، در تست مشخص میشه و شما میتونین اونا رو برطرف کنید و از بروز خطا در محیط Production جلوگیری کنید.

در این مقاله در مورد تست کردن برنامه‌های Nodejs توضیحاتی کاملی رو در اختیارتون قرار میدم. برای تست کردن از ابزارهای Mocha و Chai و SinonJS استفاده میکنیم و توضیحات کاملی در مورد spies و stubs و mocks بیان میشه. برای فهمیدن کامل این مطلب نیاز هست که شما با Javascript و Nodejs آشنایی داشته باشید.

نصب ابزارها و آماده‌سازی محیط کار

Mocha

Mocha یک test runner یا اجراکننده تست هست. این ابزار تست‌هایی که شما نوشتید رو اجرا میکنه و نتایج رو در اختیارتون قرار میده. خود تست‌ها با استفاده از Mocha نوشته نمیشن و در ادامه در مورد نوشتن تست‌ها بهتون توضیح میدم. test runner های زیادی دیگه‌ای وجود دارند که میشه به Jasmine و Jest اشاره کرد.

برای استفاده از Mocha بهتره که اون رو بصورت Global یا سراسری در سیستم خودتون نصب کنید. برای اینکار دستور زیر رو در Command line اجرا میکنیم:

حالا میتونیم از mocha در هر جای سیستم که بخوایم استفاده کنیم. حالا برای درک عمیقتر شما یک دایرکتوری بنام testing-node میسازیم و در command line به مسیر اون میرم و دستور npm init -y رو اجرا میکنیم تا فایل package.json به سرعت ساخته بشه. برای اینکه یک تست نمونه به وجود بیاریم، فعلا از ابزار assert استفاده میکنیم و بعدا در ادامه مطلب سراغ chai میریم.

برای نصب ابزار assert دستور زیر رو اجرا کنید:

حالا یک دایرکتوری بنام tests به وجود بیارید و درون اون یک فایل بنام sample.test.js بسازید و کدهای زیر رو درونش قرار بدین:

همونطور که میبینید از describe و it برای تعریف عناوین تست استفاده شده که در ادامه بیشتر در مورد اونا توضیح میدم. برای شروع کار از متد equal استفاده کردیم و میخواهیم تست کنیم که true برابر با true هست یا خیر! اگر کدهای بالا رو ذخیره کنیم و در command line دستور mocha tests/ رو اجرا کنیم، mocha همه تستهای مورد نظر رو اجرا میکنه و نتیجه رو در اختیارتون قرار میده. بصورت زیر:

متخصص جاوا اسکریپت
با جاوا اسکریپت جادوگری کنید! آیا می دونید با زبان جاوااسکریپت می تونید، برای فرانت اند و بک اند وبسایت ها برنامه نویسی کنید؟ همینطور اپلیکیشن دسکتاپ و موبایل بسازید؟ اگر دوست داری اینکارها رو انجام بدی و React, ElectronJS, ReactNative, NodeJS,MongoDB و ... رو تو یه دوره یاد بگیری، متخصص جاوااسکریپت سون لرن رو حتما ببین : متخصص جاوا اسکریپت arrow_back

همونطور که میبینید چون true برابر با true هست پس تست مورد نظر pass یا قبول میشه و همونطور که میبینید رنگ اون سبز هست. اگر تست‌های مورد نظرتون رد بشن یک ارور به شما داده میشه و بقیه تست‌ها انجام نمیشن و شما باید تست مورد نظر رو برطرف کنید و کارتون رو ادامه بدین تا همه مشکلات رو برطرف کنید.

برای اینکه حالت fail رو هم ببینیم، کدها رو بصورت زیر تغییر میدیم:

همونطور که میبینید بررسی کردیم که true برابر با false هست یا خیر. پس تست بالا fail میشه. مجددا دستور mocha tests/ رو اجرا کنید. خروجی بصورت زیر خواهد بود:

همونطور که میبینید اجرای تست متوقف میشه و یک ارور به شما داده میشه و میگه که کجا این مشکل به وجود اومده است.

بهتره وقتی دارید با Mocha کار میکنید از arrow function ها استفاده نکنید چون با کلمه this به مشکل برخواهید خورد. برای مطالعه بیشتر در این مورد میتونین این مطلب رو مطالعه بفرمائید.

Chai

Chai یک کتابخانه برای assertion هست. همونطور که دیدید در مثالهای بالا از ابزار Assert استفاده کردیم و تا اینجا تقریبا میدونین که assert ها چه کارهایی رو انجام میدن. Chai تقریبا مثل ابزار assert عمل میکنه ولی خوانایی کدها در اون خیلی بهتره و راحتتر میتونین با اون کار کنید. برای نصب این ابزار بصورت زیر عمل میکنیم:

حالا که chai رو نصب کردیم، کدهای مثال قبل رو بازنویسی میکنم و از chai در اون استفاده میکنم. بصورت زیر:

همونطور که میبینید از expect ابزار chai استفاده کردیم و چک کردیم که true برابر با true هست یا خیر. اگر دستور mocha tests/ رو اجرا کنید، خواهید دید که تست مورد نظر pass میشه.

ابزار SinonJS

SinonJS مواردی همچون spies و stubs و mocks رو برای تست بصورت مستقل و stand alone براتون فراهم میکنه. برای نصب این ابزار بصورت زیر عمل میکنیم:

حالا میخوایم موارد بالا رو تعریف کنیم و ببینیم که کاربرد اونا چیه.

Spies: با استفاده از این امکان میتونین توابع fake به وجود بیارید و میتونین روند اجرا رو با استفاده از اونا پیگیری کنید. مثلا میتونیم بفهمیم که تابع چه زمانی و چطور فراخوانی شده و ببینیم که چند بار اجرا شده است. همچنین میتونیم از spies برای توابع موجود استفاده کنیم و به قابلیتهای ذکر شده دسترسی داشته باشیم و نحوه اجرای اونا رو track کنیم.

Stubs: به ما این قابلیت رو میدن که توابع رو جایگزین کنیم و به ما کنترل بیشتری برای مدیریت تست رو میدن. میتونیم هر چیزی که بخوایم رو return کنیم و یا اینکه تابع جوری عمل کنه که سناریوهای مختلفی رو به وجود بیاره تا بتونیم حالت‌های مختلف رو بررسی و تست کنیم.

Mocks: این موارد متدهای fake (شبیه به spies) هستند که رفتارهای از پیش برنامه‌ریزی شده (شبیه به stubs) نشون میدن.

با استفاده از تست‌ها شما باید فقط یکبار فکر و وقتتون رو برای اونا بزارید و دیگه همیشه راحت باشید و از تغییر دادن کدهاتون نترسید.

در ادامه و در قسمت بعد به همراه مثال موارد بالا رو بهتون توضیح میدم تا کاربرد اونا رو بهتر متوجه بشید و بتونین از قدرت اونا برای نوشتن تستهای مورد نظرتون استفاده کنید.

comment دیدگاه کاربران

add_circle ارسال دیدگاه

خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :