gpt4 book ai didi

php - Zend Framework 与 Behat BDD 集成

转载 作者:IT王子 更新时间:2023-10-29 00:18:07 24 4
gpt4 key购买 nike

有人用过Behat使用 Zend 框架?关于如何同时使用两者的任何示例?

最佳答案

我成功了。它与 PHPUnitZend_Test 配合使用,因此您可以使用所有这些漂亮的 assertXYZ() 方法。首先,确保您已经安装了 behat 并且在您的系统 $PATH 中可用。我做了以下事情:

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

features/bootstrap/FeatureContext.php 类是 Behat 需要 self 引导的类:

<?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 这样的功能:

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

祝你好运!

关于php - Zend Framework 与 Behat BDD 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5667444/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com