如何解决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编写的。
,我的情况总是在第一步停止。我终于弄清楚了,在我的代码中某个地方死了或者退出了,这停止了贝蒂的完整性。因此,请确保您的应用程序不包含任何死亡或退出。现在一切正常。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。