شرح صفوف ومحتوى الفقرة
يجب ألا تترك الاختبارات المعتمدة على قاعدة البيانات أي سجلات متبقية تلوث الاختبارات التالية أو تسبب نتائج غير مستقرة. يتيح تضمين السمة RefreshDatabase داخل كلاس الاختبار تشغيل التهجيرات مرة واحدة وتغليف كل دالة اختبار داخل معاملة قاعدة بيانات يتم التراجع عنها تلقائياً فور انتهاء الدالة.
- منع تلوث البيانات (Zero Test Pollution): تبدأ كل دالة اختبار بقاعدة بيانات فارغة ومُهجرة بالكامل دون أي أثر من الاختبارات السابقة.
- سرعة التراجع عن المعاملة (Transaction Speed): بدلاً من هدم الجداول وإعادة بنائها في كل مرة، يتراجع RefreshDatabase عن المعاملة في أجزاء من الثانية.
- التوافق مع الذاكرة (In-Memory Compatibility): يعمل بكفاءة عالية مع قواعد SQLite في الذاكرة أو قواعد بيانات الاختبار المستقلة.
PHP
namespace Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
class PostDatabaseTest extends TestCase {
use RefreshDatabase;
}