ماژول Assert یک ماژول درونی در node.js است که برای نوشتن Test Case کاربرد دارد.
تست کیس در برنامهنویسی به نوشتن متدهایی برای آزمودن قسمتهای پروژه به صورت جزء به جزء گفته میشود. یک تست کیس با دادن متغیرها و به وجود آوردن شرایط واقعی برای متدهای عملیاتی پروژه باعث تحت آزمون قرار گرفتن متدها میشود و میزان قدرت و درستی پروژه را میآزماید
ماژول Assert در واقع یک روش برای انجام تستهای واحد بر روی عبارتهای node.js است. اگر تست کیس مورد نظر منجر به شکست یا 0 یا false شد، آنگاه یک خطا به وقوع پیوسته است. اگر تست کیس مورد نظر قبول شد و یا 1 یا true شد، آنگاه هیچ فیدبک (بازخوردی) دیده نمیشود.
اگر چه این ماژول فقط به صورت درونی در نظر گرفته شده است، اما ما میتوانیم به صورت زیر از بیرون نیز به آن دسترسی داشته باشیم:
var assert = require('assert');
دقت داشته باشید که ماژول assert
، یک فریمورک تست نیست و نباید با آن مانند یک فریمورک تست برخورد کنیم.
برخی از رایجترین مثالهای کاربرد ماژول Assert را در ادامه این مطلب برای شما آوردهام. دقت کنید که در خلال این مثالها به طور کامل نحوه ی استفاده از ماژول Assert در کد نویسی، توضیح داده شده است.
//Name of the file: assert-1.js var assert = require('assert'); var a = 10; var b = 20; assert(a > b);
ما میتوانیم آن را به روش زیر اجرا کنیم:
//Name of the file: assert-snippet-true.js var assert = require('assert'); function demo (x,y,z) { var value = x + y + z ; return value; } var output = demo(4,1,10); console.log("Output : " + output); var expected_output = 15; console.log("Expected Output : " + expected_output); assert( output === expected_output , 'Test case is true so this will not be printed');
ما میتوانیم آن را به روش زیر اجرا کنیم:
به این نکته دقت کنید که اگر تست کیس مورد نظر ما، هیچ اشکالی در کدها پیدا نکند، هیچگونه خروجی ایجاد نخواهد شد (بنابراین فقط زمانی خروجی داریم که خطایی رخ داده باشد)
//Name of the file : assert-snippet-false.js var assert = require('assert'); function demo (x,y,z) { var value = x + y + z ; return value; } var output = demo(3,2,10); console.log("Output : " + output); var expected_output = 12; console.log("Expected Output : " + expected_output); assert( output === expected_output , 'This is not what we expected');
ما میتوانیم آن را به روش زیر اجرا کنیم:
هر کدام از متدهای ماژول assert در node.js با جزییات بیشتر در قالب نمونه کد در قسمت پایین توضیح داده شدهاند:
()assert.ok
دارد.assert(value[, message])
مثال:
//Name of the file : assert.js var assert = require('assert'); var a = 10; var b = 20; assert(a > b , "A should be greater than B");
ما میتوانیم آن را به روش زیر اجرا کنیم:
==
انجام میشود.assert.deepEqual(actual, expected[, message])
مثال:
//Name of the file : assert.deepEqual.js var assert = require('assert'); var a = 10; var b = '10'; var c = 10.25; //Case 1 assert.deepEqual(a,b, "Nothing printed because they are using == for comparison"); //Case 2 assert.deepEqual(a,c, "Error because values doesn't match");
ما میتوانیم آن را به روش زیر اجرا کنیم:
===
انجام میشود.جهت یادآوری عرض میکنم که عملگر === علاوه بر برابری مقدار، برابری نوع دو متغییر را نیز بررسی میکند
assert.deepStrictEqual(actual, expected[, message])
مثال:
//Name of the file : assert.deepStrictEqual.js var assert = require('assert'); var a = 10; var b = '10'; assert.deepStrictEqual(a,b, "Error because they are using === for comparison");
ما میتوانیم آن را به روش زیر اجرا کنیم:
==
انجام میشود.assert.equal(actual, expected[, message])
مثال:
//Name of the file : assert.equal.js var assert = require('assert'); var a = 50; var b = '50'; var c = 50.25; //Case 1 assert.equal(a,b, "Nothing printed because they are using == for comparison"); //Case 2 assert.equal(a,c, "Error because values doesn't match");
ما میتوانیم آن را به روش زیر اجرا کنیم:
//Case 1 assert.fail(message) //Case 2 assert.fail(actual, expected[, message[, operator[, stackStartFunction]]])
مثال:
//Name of the file : assert.fail.js var assert = require('assert'); assert.fail(1, 2, 'This is an error', '>');
ما میتوانیم آن را به روش زیر اجرا کنیم:
assert.ifError(value)
مثال:
//Name of the file : assert.ifError.js var assert = require('assert'); //Case 1 : No error assert.ifError(0); //Case 2 : throws 1 assert.ifError(1); //Case 3 : throws error assert.ifError('error');
ما میتوانیم آن را به روش زیر اجرا کنیم:
()assert.deepEqual
است.assert.notDeepEqual(actual, expected[, message])
مثال:
//Name of the file : assert.notDeepEqual.js var assert = require('assert'); var a = 10; var b = 12; var c = '10'; //Case 1 assert.notDeepEqual(a,b, "Nothing printed because they are using !== for comparison"); //Case 2 assert.notDeepEqual(a,c, "Error because values match here");
ما میتوانیم آن را به روش زیر اجرا کنیم:
()assert.deepStrictEqual
است.assert.notDeepStrictEqual(actual, expected[, message])
مثال:
//Name of the file : assert.notDeepStrictEqual.js var assert = require('assert'); var a = 10; var b = '10'; var c = 10; //Case 1 assert.notDeepStrictEqual(a,b, "No Error because they are checking for not deep strict equal"); //Case 2 assert.notDeepStrictEqual(a,c, "Error because values are equal");
ما میتوانیم آن را به روش زیر اجرا کنیم:
!=
(عملگر نابرابری) استفاده میشود.assert.notEqual(actual, expected[, message])
مثال:
//Name of the file: assert.notEqual.js var assert = require('assert'); var a = 10; var b = 10.25; var c = '10'; //Case 1 assert.notEqual(a,b, "Nothing printed because they are using != for comparison"); //Case 2 assert.notEqual(a,c, "Error because values match");
ما میتوانیم آن را به روش زیر اجرا کنیم:
! ==
(عملگر نابرابری که علاوه بر مقدار، نابرابری در نوع هم بررسی میکند) استفاده میشود.assert.notStrictEqual(actual, expected[, message])
مثال:
//Name of the file : assert.notStrictEqual.js var assert = require('assert'); var a = 10; var b = 10.25; var c = '10'; var d = 10; //Case 1 assert.notStrictEqual(a,b, "Nothing printed because they are using !== for comparison"); //Case 2 assert.notStrictEqual(a,c, "Nothing printed because still its not a match"); //case 3 assert.notStrictEqual(a,d, "Error because its a match");
ما میتوانیم آن را به روش زیر اجرا کنیم:
assert.ok(value[, message])
مثال:
//Name of the file : assert.ok.js var assert = require('assert'); //Case 1 assert.ok(true, "No error "); //Case 2 assert.ok(1,"No error"); //Case 3 assert.ok(false,"It is an error"); //Case 4 assert.ok(0 , " Again error"); //case 5 var a = 10; var b = 20; assert(a > b , "A should be greater than B");
ما میتوانیم آن را به روش زیر اجرا کنیم:
دقت کنید که چون CASE 5 رخ داده است، اولین پیام خطا که در واقع در CASE 3 ایجاد شده است به عنوان خروجی ارسال شده است.
===
را مورد استفاده قرار میدهد.assert.strictEqual(actual, expected[, message])
مثال:
//Name of the file : assert.strictEqual.js var assert = require('assert'); var a = 10; var b = '10'; var c = 10; //Case 1 assert.strictEqual(a,c, "Nothing printed"); //Case 2 assert.strictEqual(a,b, "Error acc to strict equality comparison");
ما میتوانیم آن را به روش زیر اجرا کنیم:
assert.throws(block[, error][, message])
مثال:
//Name of the file : assert.throw.js var assert = require('assert'); assert.throws( () => { throw new Error('Wrong value'); }, Error );
assert.throws
است.assert.doesNotThrow(block[, error][, message])
در درس 27ام از سلسله دروس 30 روز با نود جی اس، ما یاد گرفتیم که ماژول assert چیست و چگونه از ماژول assert در کدهای خودمان استفاده کنیم. ما همچنین در مورد تمامی متدهای ماژول assert با استفاده از مثالهای عملی، نکات فراوانی را آموختیم. این متدها عبارت بودند از:
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.