是可以将PHPSpec与behat?一起使用,还是只使用PhPunit与behat? (Symfony的)

时间:2014-06-19 20:43:37

标签: symfony phpunit behat phpspec

这些天我和Behat玩了一点,问题是我不知道我是否可以使用Behat的PHPspec来断言"断言"所有的东西,这个是如此可读,我想使用它。就我而言,我使用的是Symfony。

如果没有,我如何在Behat中使用来自PHPunit的Asserts。我现在不能,我用作曲家安装PHPUnit,但是在Behat文档中他们需要一个文件,但是场景略有不同(他们没有使用composer安装它,不在Vendor目录中)

来自DOC的网址:http://docs.behat.org/quick_intro.html#more-about-features

,require_once很优雅。

任何想法?,任何答案?,谢谢!

3 个答案:

答案 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