Me gustaría saber cómo escribir pruebas PHPUnit con Zend_Test y en general con PHP.¿Cómo uso PHPUnit con Zend Framework?
Respuesta
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.
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 base de clase de casos de prueba es el siguiente:
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();
hace todo el trabajo de instalación hasta que también configurar la aplicación real. Una prueba simple entonces 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 ...
Tienen un "Introduction to the Art of Unit Testing" en la Zona Zend Developer, que cubre PHPUnit.
Muy buena lectura. –
gracias por el enlace. Muy agradable leer de hecho. –
enlace está actualmente roto – thanksd
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 las pruebas unitarias en el QuickStart tutorial de Zend Framework y escribir algunas pruebas para ello.
Usando ZF 1.10, que poner un poco de código de arranque en pruebas/Bootstrap.php (básicamente lo que está en (público/index.php), hasta $ aplicación-> bootstrap().
entonces soy capaz de ejecutar una prueba utilizando
phpunit --bootstrap ../bootstrap.php PersonControllerTest.php
Además, si el uso de una transacción de base de datos, entonces sería mejor eliminar toda la transacción que se consigue hecho a través de una unidad de prueba de lo contrario su base de datos se lleva todos en mal estado.
modo en el set hasta
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 desmontaje de todo lo que tiene que hacer es rollback
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);
}
- 1. Excepciones de prueba de problemas con PHPUnit y Zend Framework
- 2. Uso de formularios con Zend Framework
- 3. ¿Cómo uso los espacios de nombres con Zend Framework?
- 4. ¿Cómo comenzar con zend framework?
- 5. Zend Framework (PHPUnit) Pruebas won'r plazo (PHPUnit: command not found/'PHPUnit_Framework_TestCase' Clase no encontrada)
- 6. Cómo usar GROUP_CONCAT con Zend Framework?
- 7. Zend Framework 2 para Zend Framework Newbie
- 8. Crear cronjob con Zend Framework
- 9. Cómo atender páginas estáticas con Zend Framework
- 10. Cómo Zend Framework con Propel ORM
- 11. Cómo integrar PayPal con Zend Framework
- 12. PHPUnit - Informe de Cobertura del Código Generador de Problemas con la aplicación Zend Framework
- 13. Zend Framework cómo configurar encabezados
- 14. ¿Cómo almacenar la configuración compartida para zend, phing y phpunit?
- 15. Zend Framework Casillas Anidadas
- 16. Cómo utilizar Loop parcial de Zend Framework con objetos
- 17. Zend Framework Oauth Provider
- 18. Pruebas unitarias con Zend Framework/Doctrine 2.0
- 19. Zend Framework integración con Behat BDD
- 20. Zend Framework 1.11 con Doctrine 2 Integration
- 21. Formulario de Zend Framework con jquery
- 22. ¿Por dónde empiezo con Zend Framework?
- 23. Conexión MySql SSL con Zend-Framework
- 24. Consulta RAW SQL con Zend Framework
- 25. Zend Framework JSON Output
- 26. Zend_Db sin Zend Framework
- 27. Zend Framework: uso de modelos y vistas, mejores prácticas
- 28. zend framework "$ this"
- 29. Zend Framework 1.9.2+ Zend_Rest_Route Ejemplos
- 30. Zend Framework Layout
Nos puedes contar un poco más sobre esto? ¡Me gusta tu clase abstracta de TestCase! ¿Dónde colocas tu Controller_TestCase? ¿Necesita solicitar/incluir algún archivo? ¿Cómo se hace una prueba? ¿Usas PHPUnit a través de la línea de comando o con un complemento en un IDE? ¡Gracias! – Andrew
Puse Controller_TestCase en mi directorio de pruebas/controlador - ese es el directorio donde se encuentran todos los casos de prueba del controlador. En general, no utilizo la carga automática al ejecutar pruebas unitarias, pero si realizo pruebas de controlador, uso Zend_Loader :: registerAutoload() para usar la carga automática porque es muy ... –
... difícil de rastrear las dependencias con el MVC en ejecución. Solo tiene que asegurarse de seguir la convención de nomenclatura y que Zend_Loader encontrará sus archivos (set include_path). Para ejecutar mis pruebas, utilizo la CLI de PHPUnit porque no me gusta la integración de PHPUnit en Eclipse PDT. Es ... –