这些天我在玩一些Behat,问题是我不知道我是否可以使用PHPspec与Behat"断言"所有的东西,这个是如此的可读,我想使用它。在我的例子中,我使用Symfony。
如果没有,我怎么能使用断言从PHPunit在Behat。我现在不能,我用composer安装了PHPUnit,但在Behat文档中他们需要一个文件,但场景略有不同(他们没有通过使用composer安装它,不在Vendor目录中)
来自DOC的URL: http://docs.behat.org/quick_intro.html#more-about-features
, require_once有点优雅。
任何想法?有答案吗?,谢谢!
你可以让phpspec的匹配器与expect helper一起工作。
使用的几个例子:
// matches if $something === 'something'
expect($something)->toBe('something');
// matches if $article->isActive() returns true
expect($article)->toBeActive();
// matches if $article->hasComments() returns false
expect($article)->notToHaveComments();
您当然可以在PHPUnit中使用Bahat。我没有尝试使用PHPSpec,但我确信如果您可以访问执行断言的逻辑,这是可能的。通常,任何测试框架都会为"外部用户"公开该逻辑。
/**
* @Then /^the magic should happen$/
*/
public function assertUnicornsExist()
{
// Make standard assertions through static calls…
PHPUnit_Framework_TestCase::assertTrue(true);
}
我不确定我得到了关于安装的全图,但是如果你使用composer,你可以简单地配置"自动加载"部分来包含你的源代码和上下文(如果它们是分开的)。我的工作基本上是开箱即用的:
{
"require": {
"behat/behat": "dev-master",
"behat/mink": "dev-master",
"behat/mink-extension": "dev-master",
"behat/mink-browserkit-driver": "dev-master",
"behat/mink-goutte-driver": "dev-master",
"phpunit/dbunit": "*"
},
"autoload": {
"psr-0": {
"": "src/"
}
}
}
那么你只包括vendor/autoload.php
。我建议添加一个引导程序,使用@BeforeSuite
钩子只运行一次。
/**
* @BeforeSuite
*/
public static function setUpSuite(BeforeSuiteScope $scope)
{
// if not bootstrapped already, then include bootstrap with init'ing the autoloader, etc…
}
另外,如果您从Behat 3开始—文档还没有,请使用http://behat.readthedocs.org/en/latest/。
当然有可能。您可以使用behat来描述某些东西应该如何表现,而使用phpspec来描述更详细的东西。下面是一个很好的例子:http://code.tutsplus.com/tutorials/a-bdd-workflow-with-behat-and-phpspec--cms-21601