Zend Framework与Behat BDD的集成 [英] Zend Framework integration with Behat BDD

查看:75
本文介绍了Zend Framework与Behat BDD的集成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人在Zend Framework中使用 Behat 吗?关于如何同时使用两者的任何示例?

Anyone has been using Behat with Zend Framework? Any examples on how to use both?

推荐答案

我知道了.它与PHPUnitZend_Test一起使用,因此您可以使用所有这些漂亮的assertXYZ()方法.首先,确保已安装behat并在系统$PATH中可用.我做了以下事情:

I got it working. It works with PHPUnit and Zend_Test so you can use all those nifty assertXYZ() methods. First, make sure you've got behat installed and available in your system $PATH. I did the following:

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

现在,创建一个像这样的目录结构:

Now, create a directory structure like so:

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

features/application/ControllerTestCase.php类是Zend_Test测试实现的典型代表:

The features/application/ControllerTestCase.php class is typical of a Zend_Test testing implementation:

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

features/bootstrap/FeatureContext.php类是Behat需要自我引导的内容:

The features/bootstrap/FeatureContext.php class is what Behat needs to bootstrap itself:

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

}

现在您可以编写features/homepage.feature之类的功能:

And now you can write features like 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"

要运行测试,请cd到包含features文件夹的目录,然后键入behat.

To run the tests, cd to the directory that contains the features folder, and type behat.

祝你好运!

这篇关于Zend Framework与Behat BDD的集成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆