آموزش Unit testing Api درلاراول

shape
shape
shape
shape
shape
shape
shape
shape

روش تست واحد در لاراول

در این مطلب قصد داریم در مورد آموزش Unit testing Api درلاراول توضیح دهیم.

در تست واحد شما برای هرکدام از این بخش ها توابع خاص می نویسید که برای نمونه یک مطلب در دیتابیس ذخیره و نتیجه اون رو با هم بررسی میکنید که آیا مقدار برگشی با مقداری که شما انتظار دارید برابر می باشد یا خیر، به همین صورت شما می توانید برای همه بخش های نرم افزار خود و توابعی که ایجاد کرده اید، تست واحد بنویسید و از صحت کارکرد آنها مطمئن شوید.

فرض کنید شما در حال کار بر روی یک پروژه بزرگ هستید و باید در زمان مشخص آن را تحویل دهید. حال مدیرشرکت هر چند روز یک بار از شما میخواهد بخشی از پروژه که تکمیل شده را مشاهده کند!( البته فرض کنید:*) خوب حالا شما اگر کدهای خودتون رو تست نکنید ممکن هست وقتی که میخواید پروژه رو برای مدیر ران کنید یهو یه باگ خودش رو نشون بده! و این موقع است که مدیر برمیگرده و به شما زل میزنه! و شما هم به کدهاتون!

اما خوب چاره ی کار چیست؟

چاره ی کار استفاده از تست واحد هست!

تست واحد چیست؟؟؟

Unit Testing (تست واحد) امکان تست هر بخش از برنامه و کد را بصورت جداگانه فراهم میکنه.

فرض کنید شما یک بخش برای ایجاد پست، ویرایش و حذف آن دارید و هر کدام هم روت مخصوص به خود را دارند. در تست واحد شما برای هرکدام از این بخش ها توابع خاص می نویسید که برای نمونه یک مطلب در دیتابیس ذخیره و نتیجه اون رو با هم بررسی میکنید که آیا مقدار برگشی با مقداری که شما انتظار دارید برابر می باشد یا خیر، به همین صورت شما می توانید برای همه بخش های نرم افزار خود و توابعی که ایجاد کرده اید، تست واحد بنویسید و از صحت کارکرد آنها مطمئن شوید.

unit testing این امکان رو برای شما فراهم می کنه که شما در هنگام اجرای نهایی برنامه با خطاهای ناخواسته مواجه نشوید و به این صورت نرم افزار مورد اعتماد تری را ایجاد نمایید.

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

در این مطلب قصد داریم با یک مدل در لاراول ایجاد و سپس تست واحد را برای این مدل اجرا کنیم.

پس اگر به تست واحد علاقه مند هستید تا انتهای مطلب همراه ما باشید:

برای شروع ابتدا لاراول را نصب، تنظیمات دیتابیس را در فایل .env انجام دهید

1- حال برای ایجاد مدل مورد نظر دستور زیر را در خط فرمان سیستم خود اجرا نمایید:

با اجرای دستور بالا مدل Post ایجاد و همراه آن کنترلر و فکتوری آن نیز ایجاد خواهد شد.

2- به فایل مایگریشن مربوط به مدل Post رفته و کدهای درون متد Up() را بصورت زیر تغییر دهید:

3- به فایل /database/factories/PostFactory.php رفته و آن را بصورت زیر تغییر دهید:

4- مدل پست خود را بصورت زیر تغییردهید:

5- حال برای انجام عملیات Crud در تست واحد، کنترلر مدل پست را بصورت زیر تغییر می دهیم:

به فایل /app/Http/Controllers/PostController.php رفته و آن را بصورت زیر تغییر دهید:

در کنترلر بالا عملیات های select, store, update and delete انجام میشود.

متد Index : تمامی پست ها را برگشت خواهد داد

متد Show : یک پست خواص را نمایش خواهد داد.

متد Store : این متد کار ایجاد یک پست جدید را بر عهده دارد. کد برگشتی از این متد 201 می باشد که به معنی ایجاد یک ردیف جدید می باشد.

متد Update : با کد برگشتی 200، کار بروزرسانی را انجام خواهد داد

و متد Delete: عملیات حذف را انجام خواهد داد وچون محتوایی برای برگشت ندارد، کد برگشتی آن 204 می باشد.

6- حال باید روت های مربوطه را ایجاد نماییم، برای اینکار به فایل /routes/api.php رفته و کدهای زیر را در آن قرار دهید:

دقت کنید که کد را در فایل مربوط به api قرار می دهیم، پس فراموش نکنید برای دسترسی به هرکدام از روت های بالا باید api را در ابتدای prefix آن صدا بزنید.

7- در این مرحله با اجرای دستور زیر migrate مربوط به مدل Post را ایجاد خواهیم کرد:

8 – فایل /tests/TestCase.php را باز و آن را بصورت زیر تغییر دهید:

8- برای ایجاد یک unit فایل جدید دستور زیر را در خط فرمان سیستم خود اجرا نمایید:

فایل ایجاد شده در آدرس /tests/Unit/PostTest.php را باز کنید و کدهای زیر را در آن قرار دهید:

توضیح کد بالا:

همانطور که می بینید هر تابع با کلمه test شروع می شود که این برای ساخت یک تابع تست لازم می باشد. یعنی توابعی که شما برای تست ایجاد می کنید حتما باید کلمه test را در ابتدای خود داشته باشند تا توسط تست واحد شناسایی شوند.

تابع assertStatus کار بررسی مقدار استاتوس کد برگشتی را انجام می دهد. برای نمونه اگر باید صفحه ای باید کد 201 را برگرداند تابع assertStatus() باید بصورت assertStatus(201) ایجاد شود.

تابع assertJson کار بررسی json برگشتی و مقداری که ما انتظار آن را از صفحه مورد نظر داریم را انجام می دهد.

البته توابع بسیاری برای کار با تست واحد وجود دارد که میتوانید با یک جستجوی ساده در گوگل آن ها را پیدا و در هنگام نیاز از این توابع استفاده نمایید.

در نهایت برای اجرای تست خود دستور زیر را در خط فرمان سیستم خود اجرا نمایید:

یا

که با پاسخی بصورت زیر باید روبرو شوید:

این پاسخ به شما میگوید که تست های شما با موفقیت انجام شده است.

شما می توانید برای روت ها و مدل های خود، تست واحد را اجر و از صحت اجرای هر بخش اطمینان حاصل نمایید

درصورتی که سوالی یا پیشنهادی دارید از بخش نظرات برای ما ارسال نمایید

منع

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *