سؤال

وأنا بدأت في محاولة لاختبار بلدي العقيدة الأجسام مع 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top