units test software framework codexception codecept php zend-framework tdd bdd behat

framework - software testing php



IntegraciĆ³n de Zend Framework con Behat BDD (3)

Codeception tiene módulo para Zend Framework . Se parece mucho a Behat, pero las pruebas están escritas en PHP DSL y no en Gherkin.

¿Alguien ha estado usando Behat con Zend Framework? ¿Algún ejemplo sobre cómo usar ambos?


Mi escenario siempre se detenía en el primer paso. Finalmente lo descubrí, hubo un dado o una salida en algún lugar de mi código que se estaba deteniendo. Así que asegúrese de que su aplicación no contenga ningún dado o salga. Ahora está funcionando bien.


Lo tengo funcionando. Funciona con PHPUnit y Zend_Test para que pueda usar todos esos assertXYZ() ingeniosos assertXYZ() . Primero, asegúrese de behat instalado y disponible en su sistema $PATH . Hice lo siguiente:

sudo pear channel-discover pear.symfony.com sudo pear channel-discover pear.behat.org sudo pear install behat/behat

Ahora, crea una estructura de directorios así:

features application ControllerTestCase.php bootstrap FeatureContext.php homepage.feature

Las features/application/ControllerTestCase.php class son típicas de una implementación de prueba Zend_Test :

<?php require_once ''Zend/Application.php''; require_once ''Zend/Test/PHPUnit/ControllerTestCase.php''; class ControllerTestCase extends Zend_Test_PHPUnit_ControllerTestCase { public $application; public function setUp() { $this->application = new Zend_Application(APPLICATION_ENV, APPLICATION_PATH . ''/configs/application.ini''); $this->bootstrap = array($this, ''appBootstrap''); parent::setUp(); } public function appBootstrap(){ $this->application->bootstrap(); } }

Las features/bootstrap/FeatureContext.php class es lo que Behat necesita para bootstrap:

<?php use Behat/Behat/Context/ClosuredContextInterface, Behat/Behat/Context/TranslatedContextInterface, Behat/Behat/Context/BehatContext, Behat/Behat/Exception/PendingException; use Behat/Gherkin/Node/PyStringNode, Behat/Gherkin/Node/TableNode; require_once ''PHPUnit/Autoload.php''; require_once ''PHPUnit/Framework/Assert/Functions.php''; define(''APPLICATION_ENV'', ''testing''); define(''APPLICATION_PATH'', dirname(__FILE__) . ''/../path/to/your/zf/application''); set_include_path(''.'' . PATH_SEPARATOR . APPLICATION_PATH . ''/../library'' . PATH_SEPARATOR . get_include_path()); require_once dirname(__FILE__) . ''/../application/ControllerTestCase.php''; class FeatureContext extends BehatContext { protected $app; /** * Initializes context. * Every scenario gets it''s own context object. * * @param array $parameters context parameters (set up via behat.yml) */ public function __construct(array $parameters) { $this->app = new ControllerTestCase(); $this->app->setUp(); } /** * @When /^I load the URL "([^"]*)"$/ */ public function iLoadTheURL($url) { $this->app->dispatch($url); } /** * @Then /^the module should be "([^"]*)"$/ */ public function theModuleShouldBe($desiredModule) { $this->app->assertModule($desiredModule); } /** * @Given /^the controller should be "([^"]*)"$/ */ public function theControllerShouldBe($desiredController) { $this->app->assertController($desiredController); } /** * @Given /^the action should be "([^"]*)"$/ */ public function theActionShouldBe($desiredAction) { $this->app->assertAction($desiredAction); } /** * @Given /^the page should contain a "([^"]*)" tag that contains "([^"]*)"$/ */ public function thePageShouldContainATagThatContains($tag, $content) { $this->app->assertQueryContentContains($tag, $content); } /** * @Given /^the action should not redirect$/ */ public function theActionShouldNotRedirect() { $this->app->assertNotRedirect(); } }

Y ahora puedes escribir características como las features/homepage.feature :

Feature: Homepage In order to know ZF works with Behat I need to see that the page loads. Scenario: Check the homepage Given I load the URL "/index" Then the module should be "default" And the controller should be "index" And the action should be "index" And the action should not redirect And the page should contain a "title" tag that contains "My Nifty ZF App"

Para ejecutar las pruebas, cd al directorio que contiene la carpeta de features y escriba behat .

¡Buena suerte!