Birim test Doktrin PHPUnit nesneleri

3 Cevap php

Ben PHPUnit ile benim Doktrin nesneleri denemek ve test etmek için başladım ve benim modelden DB yeniden istiyorum baştan her zaman nesneleri.

Benim ilk denemem şöyle:

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();

    }

}

Sorun setup () ikinci testi, createTablesFromModels () başarısız tekrar çağırdı, ben bir hata alıyorum ne zaman tablolardan hiçbiri mevcut olduğundan olmasıdır.

Gerçekten başkası PHPUnit veya diğer birim test amaçlı bir Doktrin bağlantı tekrar başlatılır nasıl bir örnek takdir ediyorum.

3 Cevap

Bu yüzden createTablesFromModels dosyaları içerir ve daha sonra ve iki kez çalışmıyor neden olan, önce sonra tanımlanan sınıfların listeleri karşılaştırır çıkıyor.

Tekrarlanan aşağıdaki işleri gibi bir dizi:

Doctrine::loadModels($path);
Doctrine::createTablesFromArray(Doctrine::getLoadedModels());

Zaten bu bulamadım durumda, Jani kurulum / devrelerde işlemini otomatikleştirmek için bir yaklaşım gönderdi.

http://codeutopia.net/blog/2008/08/27/database-helper-for-phpunit/

https://gist.github.com/Ocramius/3994325: veri armatürleri kullanılarak test edebilirsiniz gösterir Ocramius, bu Gist göz atın