Zend Framework与Behat BDD集成

| 有人在使用Zend Framework的Behat吗?关于如何同时使用这两个示例?     
已邀请:
我知道了它与
PHPUnit
Zend_Test
一起使用,因此您可以使用所有这些漂亮的
assertXYZ()
方法。首先,确保已安装
behat
,并且系统and4ѭ可用。我做了以下事情:
sudo pear channel-discover pear.symfony.com
sudo pear channel-discover pear.behat.org
sudo pear install behat/behat
现在,创建一个目录结构,如下所示:
features
    application
        ControllerTestCase.php
    bootstrap
        FeatureContext.php
    homepage.feature
features/application/ControllerTestCase.php
类是
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();
    }
}
Behat需要自己引导
features/bootstrap/FeatureContext.php
类:
<?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();
    }

}
现在您可以编写write12ѭ之类的功能:
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\"
要运行测试,请将“ 14”移至包含“ 15”文件夹的目录,然后键入“ 3”。 祝好运!     
Codeception具有Zend Framework的模块。它很像Behat,但是测试是用PHP DSL而不是Gherkin编写的。     
我的情况总是在第一步停止。我终于弄清楚了,在我的代码中某个地方死了或者退出了,这停止了贝蒂的完整性。因此,请确保您的应用程序不包含任何死亡或退出。现在一切正常。     

要回复问题请先登录注册