تنظیمات دیتابیس برای تست در لاراول

اگر شما هم از اون برنامه‌نویس‌ها هستید که برای کدهاتون تست می نویسید، مطمئنا نیازمند این هستید که موقع تست از دیتای واقعی و دیتابیس واقعی استافده کنید و رفتار برنامه‌تونو در هنگام کار با دیتابیس ببنید بدون اینکه دیتابیس اصلی برنامه تون مشکلی براش پیش بیاد و دستخوش تغییرات بشه.

خب برای این کار تو لاراول باید یه سری تنظیمات انجام بدیم که خیلی راحته. اگر دایرکتوری config رو توی پروژه‌تون نگاه کنید میبینید که شامل چند تا زیر دایرکتوریه که یکیش به نام testing ـه. تو این فولدر ما تنظیماتی رو قرار میدیم که در هنگام اجرای تست‌ها به کمکمون میاد و محیط تست این تنظیمات رو در اولویت استفاده قرار میده. به طور پیشفرض یک فایل app.php و یک فایل database.php قرار داره توش.

من برای تست از دیتابیس sqlite استفاده می‌کنم. پس محتویات فایل دیتابیس رو به این شکل تغییر میدیم:

 

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

خب این شد تنظیمات دیتابیسمون. حالا برای انجام هر تست باید دو تا متد رو توی کلاس تستتون override کنید به این صورت:

 

متد setUp در هنگام اجرای تست فراخوانی میشه و توش میایم و به وسیله کلاس Artisan دستور migrate رو اجرا می‌کنیم تا جداول دیتابیسمون ساخته بشن.

متد tearDown هم پس از پایان تست‌ها فراخوانی میشه و ما میاییم همه چیو تو دیبابیس به حالت اولش برمی‌گردونیم توسط دستور migrate:rollback.

حالا به راحتی می‌تونید تست‌هاتونو بنویسید و با دیتابیس واقعی سر و کله بزنید.

تذکر

احتمال داره در هنگام اجرای تست با خطایی با این مضمون که درایوری برای دیتابیس پیدا نشد مواجه بشید. و این به خاطر اینه که اکستنشن sqlite برای php نصب نیست. برای این کار توی اوبونتو فقط کافیه دستور زیر را توی ترمینال اجرا کنیم:

بعد از این دستور sqlite برای php5 نصب شده و فعال می‌شود.

 

7 دیدگاه در “تنظیمات دیتابیس برای تست در لاراول

    • حتما همین کارو می‌کنم. بیشتر منتظرم لاراول ۵ منتشر بشه تا بیشتر در مورد اون بنویسم

    • چون همه تیبل‌ها رو همزمان میسازه فرق نمی‌کنه rollback باشه یا reset

  1. همین چند روز پیش بود با تست تو لاراول و کد سپت آشنا شدم یکی از سوال هام در مورد دیتا بیسش بود ، میشه از sqlite برای تست و از mysql جدا برای پروژه استفاده کرد؟

    • بله امکانش هست. شما می‌تونید با ایجاد تنظیمات برای محیط‌های مختلف، این کارو انجام بدید.

دیدگاهتان را بنویسید

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