Ben Zend_Test ve PHP ile genel PHPUnit testleri yazmak için nasıl bilmek istiyorum.
Ben tamamen tüm denetleyicileri test Zend_Test kullanıyorum. Yalnızca (önyükleme dosyasının kendisini ön denetleyicisi sevk etmemelidir!) Sizin önyükleme dosyasını kurmak zorunda gibi, kurmak oldukça basit. Benim baz test case sınıf bu gibi görünüyor:
abstract class Controller_TestCase extends Zend_Test_PHPUnit_ControllerTestCase
{
protected function setUp()
{
$this->bootstrap=array($this, 'appBootstrap');
Zend_Auth::getInstance()->setStorage(new Zend_Auth_Storage_NonPersistent());
parent::setUp();
}
protected function tearDown()
{
Zend_Auth::getInstance()->clearIdentity();
}
protected function appBootstrap()
{
Application::setup();
}
}
Application::setup();
tüm kurulum kadar görevleri de gerçek bir uygulama kurmak gelmez hangi nerede. Basit bir test bu gibi görünecektir:
class Controller_IndexControllerTest extends Controller_TestCase
{
public function testShowist()
{
$this->dispatch('/');
$this->assertController('index');
$this->assertAction('list');
$this->assertQueryContentContains('ul li a', 'Test String');
}
}
Hepsi bu ...
Onlar phpunit kapsayan Zend Geliştirici Bölgesi, bir "Introduction to the Art of Unit Testing" var.
Bir veritabanı işlemi kullanarak eğer artı o bir birim test, aksi takdirde veritabanı tüm berbat olur ile bitmiş olur tüm işlem silmek için iyi olacaktır.
böylece kurmak
public function setUp() {
YOUR_ZEND_DB_INSTANCE::getInstance()->setUnitTestMode(true);
YOUR_ZEND_DB_INSTANCE::getInstance()->query("BEGIN");
YOUR_ZEND_DB_INSTANCE::getInstance()->getCache()->clear();
// Manually Start a Doctrine Transaction so we can roll it back
Doctrine_Manager::connection()->beginTransaction();
}
ve devrelerde üzerinde yapmanız gereken tüm rollback olduğunu
public function tearDown() {
// Rollback Doctrine Transactions
while (Doctrine_Manager::connection()->getTransactionLevel() > 0) {
Doctrine_Manager::connection()->rollback();
}
Doctrine_Manager::connection()->clear();
YOUR_ZEND_DB_INSTANCE::getInstance()->query("ROLLBACK");
while (YOUR_ZEND_DB_INSTANCE::getInstance()->getTransactionDepth() > 0) {
YOUR_ZEND_DB_INSTANCE::getInstance()->rollback();
}
YOUR_ZEND_DB_INSTANCE::getInstance()->setUnitTestMode(false);
}
Yani onun bu zor değil dostum
Keep Smiling Kdecom