۳۰ روز با Node – روز بیست و هفتم: ماژول Assert در نود جی اس

0 264

معرفی

ماژول Assert یک ماژول درونی در node.js است که برای نوشتن Test Case کاربرد دارد.

تست کیس در برنامه‌نویسی به نوشتن متدهایی برای آزمودن قسمت‌های پروژه به صورت جزء به جزء گفته می‌شود. یک تست کیس با دادن متغیرها و به وجود آوردن شرایط واقعی برای متدهای عملیاتی پروژه باعث تحت آزمون قرار گرفتن متدها می‌شود و میزان قدرت و درستی پروژه را می‌آزماید

ماژول Assert در واقع یک روش برای انجام تست­های واحد بر روی عبارت‌های node.js است. اگر تست کیس مورد نظر منجر به شکست یا 0 یا false شد، آنگاه یک خطا به وقوع پیوسته است. اگر تست کیس مورد نظر قبول شد و یا 1 یا true شد، آنگاه هیچ فید­بک (بازخوردی) دیده نمی‌شود.

اگر چه این ماژول فقط به صورت درونی در نظر گرفته شده است، اما ما می­توانیم به صورت زیر از بیرون نیز به آن دسترسی داشته باشیم:

دقت داشته باشید که ماژول assert، یک فریمورک تست نیست و نباید با آن مانند یک فریمورک تست برخورد کنیم.

چگونه ماژول Assert کار می‌کند؟

برخی از رایج‌ترین مثال‌های کاربرد ماژول Assert را در ادامه این مطلب برای شما آورده‌ام. دقت کنید که در خلال این مثال‌ها به طور کامل نحوه ی استفاده از ماژول Assert در کد نویسی، توضیح داده شده است.

  • قطعه کد شماره 1: در این قطعه کد ما یک عملیات مقایسه را پیاده‌سازی کرده‌ایم. در این عملیات مقایسه چک می‌کنیم که آیا متغییر a از متغییر b بزرگ‌تر هست یا خیر.
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

بررسی روش assert equal

  • قطعه کد شماره 2: در این مثال، ما یک عملیات مقایسه‌ی دقیق (هم از لحاظ مقدار و هم از لحاظ نوع) انجام می‌دهیم و بررسی می‌کنیم که آیا مجموع سه عدد با خروجی مورد انتظار برابر است یا خیر.
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

assert-snippet-true

به این نکته دقت کنید که اگر تست کیس مورد نظر ما، هیچ اشکالی در کدها پیدا نکند، هیچ‌گونه خروجی ایجاد نخواهد شد (بنابراین فقط زمانی خروجی داریم که خطایی رخ داده باشد)
  • قطعه کد شماره 3: در این مثال، ما یک عملیات مقایسه‌ای دقیق انجام می‌دهیم و بررسی می‌کنیم که آیا مجموع سه عدد با خروجی مورد انتظار برابر است یا خیر:
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

    assert-snippet-false

متدهای ماژول assert

هر کدام از متدهای ماژول assert در node.js با جزییات بیشتر در قالب نمونه کد در قسمت پایین توضیح داده شده‌اند:

  • assert: این متد بررسی می‌کند که آیا عبارت، true هست یا خیر. این متد عملکردی مشابه عملکرد متد ()assert.ok دارد.
    نحوی نوشتن متد assert:
    مثال:
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

    assert

  • assert.deepEqual: این متد برای بررسی برابری مقدار دو متغییر مورد استفاده قرار می‌گیرد. دقت نمایید که این مقایسه با استفاده از عملگر == انجام می‌شود.
    نحوی نوشتن متد assert.deepEqual:

    مثال:

    ما می‌توانیم آن را به روش زیر اجرا کنیم:

assert.deepEqual

  • assert.deepStrictEqual : این متد برای بررسی برابری دو متغییر مورد استفاده قرار می‌گیرد. دقت نمایید که این مقایسه با عملگر === انجام می‌شود.
جهت یادآوری عرض می‌کنم که عملگر === علاوه بر برابری مقدار، برابری نوع دو متغییر را نیز بررسی می‌کند
  • نحوی نوشتن متد assert.deepStrictEqual:

مثال:

ما می‌توانیم آن را به روش زیر اجرا کنیم:

assert.deepStrictEqual

  •  assert.equal : این متد برای بررسی برابری، بین مقدار واقعی و مقدار مورد انتظار یک متغییر، مورد استفاده قرار می‌گیرد. این مقایسه، با استفاده از عملگر == انجام می‌شود.
    نحوی نوشتن متد assert.equal:
    مثال:
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

    assert.equal

  • assert.fail: این متد برای ارسال یک AssertionError استفاده می‌شود.
    نحوی نوشتن متد assert.fail:

    مثال:

    ما می‌توانیم آن را به روش زیر اجرا کنیم:

    assert.fail

  • assert.ifError: در این متد، اگر نتیجه ارزیابی یک خطای خاص بر روی یک قطعه کد، true شود، پیام خطای مناسب را ارسال می‌کند.
    نحوی نوشتن متد assert.ifError:

    مثال:

    ما می‌توانیم آن را به روش زیر اجرا کنیم:

assert.ifError

  • assert.notDeepEqual: این متد برای بررسی هر گونه نابرابری عمیق (deep inequality) استفاده می‌شود. دقت کنید که این متد، از لحاظ عملکرد متضاد متد ()assert.deepEqual است.
    نحوی نوشتن متد assert.notDeepEqual:
    مثال:
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

 

assert.notDeepEqual

  • assert.notDeepStrictEqual: این متد برای بررسی هر گونه نابرابری شدیداً عمیق (deep strict inequality یعنی از لحاظ نوع و مقدار) مورد استفاده قرار می‌گیرد. این متد از لحاظ عملکرد متضاد متد ()assert.deepStrictEqual است.
    نحوی نوشتن متد assert.notDeepStrictEqual:
    مثال:
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

 

assert.notDeepStrictEqual

  • assert.notEqual: این متد، برابر نبودن مقادیر دو متغییر را بررسی می‌کند. دقت کنید برای انجام این کار از!= (عملگر نابرابری) استفاده می‌شود.
    نحوی نوشتن متد assert.notEqual
    مثال:
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

 

assert.notEqual

  • assert.notStrictEqual: این متد، برابر نبودن مقادیر دو متغییر را بررسی می‌کند. دقت کنید برای انجام این کار از ! == (عملگر نابرابری که علاوه بر مقدار، نابرابری در نوع هم بررسی می‌کند) استفاده می‌شود.
    نحوی نوشتن متد assert.notStrictEqual:
    مثال:
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

     

assert.notStrictEqual

  • assert.ok: این متد برای بررسی اینکه آیا یک مقدار درست است یا نه استفاده می‌شود.
    نحوی نوشتن متد assert.ok:
    مثال:
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

 

assert.ok

دقت کنید که چون CASE 5 رخ داده است، اولین پیام خطا که در واقع در CASE 3 ایجاد شده است به عنوان خروجی ارسال شده است.

  • assert.strictEqual: این متد برای بررسی تساوی مقادیر دو متغییر مورد استفاده قرار می‌گیرد برای انجام این کار نیز، عملگر === را مورد استفاده قرار می‌دهد.
    نحوی نوشتن متد assert.strictEqual:
    مثال:
    ما می‌توانیم آن را به روش زیر اجرا کنیم:

 

assert.strictEqual

  • assert.throws: این متد زمانی استفاده می‌شود که ما انتظار داریم که دستورات موجود در بلوک یک تابع، یک خطا را ارسال کنند.
    نحوی نوشتن متد assert.throws:
    مثال:
  • assert.doesNotThrow: این متد، از لحاظ عملکرد متضاد متد assert.throws است.
    نحوی نوشتن متد assert.doesNotThrow:

خلاصه

در درس 27ام از سلسله دروس 30 روز با نود جی اس، ما یاد گرفتیم که ماژول assert چیست و چگونه از ماژول assert در کدهای خودمان استفاده کنیم. ما همچنین در مورد تمامی متدهای ماژول assert با استفاده از مثال‌های عملی، نکات فراوانی را آموختیم. این متدها عبارت بودند از:

  • ()assert
  • ()assert.deepEqual
  • ()assert.deepStrictEqual
  • ()assert.doesNotThrow
  • ()assert.equal
  • ()assert.fail
  • ()assert.ifError
  • ()assert.notDeepEqual

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.

film izle | eskisehir escort | modanisa | mersin escort | www.ieski.com | eskort adana | www.izmir-eskort.org | kabak koyu | hd tv izle