كائنات اختبار وحدة العقيدة مع PHPUnit
سؤال
وأنا بدأت في محاولة لاختبار بلدي العقيدة الأجسام مع PHPUnit، وترغب في تحميل DB من طراز بي كائنات من جديد في كل مرة.
وأول محاولة لي تبدو شيئا مثل هذا:
class Tests_User extends PHPUnit_Framework_TestCase
{
public function setUp()
{
Doctrine_Manager::connection('mysql://user:pass@localhost/testdb');
Doctrine::createDatabases();
Doctrine::createTablesFromModels('../../application/models');
}
public function testSavingWorks()
{
$user = new User();
$user->save();
}
public function testSavingWorksAgain()
{
$user = new User();
$user->save();
}
public function tearDown()
{
Doctrine::dropDatabases();
}
}
والمشكلة هي أن عندما يتم استدعاء الإعداد () مرة أخرى للاختبار الثاني، createTablesFromModels () فشل، حتى أحصل على خطأ لأن أيا من الجداول موجودة.
وسأكون ممتنا حقا مثال عن كيفية شخص آخر قد reinitialised اتصال مذهب لPHPUnit أو غيرها من أغراض اختبار وحدة.
المحلول
وهكذا اتضح أن createTablesFromModels تشمل الملفات في وثم يقارن قوائم فئات محددة قبل وبعد، وهذا هو السبب انها لا تعمل مرتين.
وتسلسل مثل الأعمال التالية عندما كرر:
Doctrine::loadModels($path);
Doctrine::createTablesFromArray(Doctrine::getLoadedModels());
نصائح أخرى
وتحقق من هذا الفحوى من Ocramius، مما يدل على أنه يمكنك اختبار باستخدام تركيبات البيانات: HTTPS: // جوهر .github.com / Ocramius / 3994325