这些天我和Behat玩了一点,问题是我不知道我是否可以使用Behat的PHPspec来断言"断言"所有的东西,这个是如此可读,我想使用它。就我而言,我使用的是Symfony。
如果没有,我如何在Behat中使用来自PHPunit的Asserts。我现在不能,我用作曲家安装PHPUnit,但是在Behat文档中他们需要一个文件,但是场景略有不同(他们没有使用composer安装它,不在Vendor目录中)
来自DOC的网址:http://docs.behat.org/quick_intro.html#more-about-features
,require_once很优雅。
任何想法?,任何答案?,谢谢!
答案 0 :(得分:3)
您可以将phpspec的匹配器与the 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();
答案 1 :(得分:1)
你肯定可以使用Bahat和PHPUnit。我没有尝试使用PHPSpec,但我确定如果你可以访问执行断言的逻辑,那么它是可能的。通常,任何测试框架都会为"外部用户"。
公开该逻辑/**
* @Then /^the magic should happen$/
*/
public function assertUnicornsExist()
{
// Make standard assertions through static calls…
PHPUnit_Framework_TestCase::assertTrue(true);
}
我不确定我是否了解安装方面的全貌,但如果你正在使用作曲家,你可以简单地配置" autoload"部分包括你的来源和背景(如果它们是分开的)。我的工作开箱即用:
{
"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/。它们包含最新的必需品和一些不错的例子。
答案 2 :(得分:0)
当然有可能。您可以使用behat来描述某些内容的行为,以及更详细的内容。很好的例子在这里:http://code.tutsplus.com/tutorials/a-bdd-workflow-with-behat-and-phpspec--cms-21601