tutorial test example descargar composer php unit-testing zend-framework testing phpunit

test - ¿Cómo uso PHPUnit con Zend Framework?



phpunit test example (6)

Además, si utiliza una transacción de base de datos, entonces sería mejor eliminar todas las transacciones que se realizan a través de una prueba de unidad, de lo contrario su base de datos se desorienta.

así que en la configuración

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

y en el desmontaje todo lo que necesita hacer es deshacer

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

Me gustaría saber cómo escribir pruebas PHPUnit con Zend_Test y, en general, con PHP.


Encontré this artículo muy útil. También la documentación Zend_Test ayudó mucho. Con la ayuda de estos dos recursos, logré implementar con éxito pruebas unitarias en el tutorial de QuickStart de Zend Framework y escribir algunas pruebas para ello.


Estoy usando Zend_Test para probar completamente todos los controladores. Es bastante simple de configurar, ya que solo tiene que configurar su archivo de arranque (¡el archivo de arranque en sí NO debe despachar el controlador frontal!). Mi clase base de caso de prueba se ve así:

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

donde Application::setup(); realiza todas las tareas de configuración que también configuran la aplicación real. Una prueba simple se vería así:

class Controller_IndexControllerTest extends Controller_TestCase { public function testShowist() { $this->dispatch(''/''); $this->assertController(''index''); $this->assertAction(''list''); $this->assertQueryContentContains(''ul li a'', ''Test String''); } }

Eso es todo...


No he usado Zend_Test, pero he escrito pruebas contra aplicaciones que usan Zend_MVC y similares. La parte más importante es obtener suficiente código de arranque en la configuración de prueba.



Usando ZF 1.10, puse un poco de código de arranque en tests / bootstrap.php (básicamente lo que está en (public / index.php), hasta $ application-> bootstrap ().

Entonces puedo ejecutar una prueba usando

phpunit --bootstrap ../bootstrap.php PersonControllerTest.php