水貂痛风机。Can';t在Symfony 2.0上安装Fabbot/Gout

水貂痛风机。Can';t在Symfony 2.0上安装Fabbot/Gout,symfony,composer-php,behat,mink,goutte,Symfony,Composer Php,Behat,Mink,Goutte,我正在将composer与Symfony 2.0.15一起使用,并迁移到最新的Behat 2.4。这在我的composer.json中: "require-dev": { "behat/behat": "2.4@stable", "behat/mink-extension": "*", "behat/symfony2-extension": "*", "behat/mink-browserkit-driver": "*", "behat/mink-gou

我正在将composer与Symfony 2.0.15一起使用,并迁移到最新的Behat 2.4。这在我的
composer.json中:

"require-dev": {
    "behat/behat": "2.4@stable",
    "behat/mink-extension": "*",
    "behat/symfony2-extension": "*",
    "behat/mink-browserkit-driver":  "*",
    "behat/mink-goutte-driver":  "dev-master",
    "behat/common-contexts": "*",
    "kriswallsmith/buzz": ">=0.5.0"
}
我运行:
php composer.phar更新--dev

还有一个错误:

Your requirements could not be solved to an installable set of packages.

Problem 1
- Installation request for behat/mink-goutte-driver dev-master -> satisfiable by behat/mink-goutte-driver dev-master.
- don't install fabpot/goutte 1.0.x-dev|install fabpot/goutte dev-master
- behat/mink-goutte-driver dev-master requires fabpot/goutte 1.0.* -> satisfiable by fabpot/goutte 1.0.x-dev.
- Conclusion: remove symfony/symfony v2.0.15
- fabpot/goutte dev-master requires symfony/dom-crawler 2.1.* -> satisfiable by symfony/symfony 2.1.x-dev, symfony/dom-crawler v2.1.0-BETA1, symfony/dom-crawler 2.1.x-dev, symfony/symfony v2.1.0-BETA1.
- Can only install one of: symfony/symfony v2.0.15, symfony/symfony 2.1.x-dev.
- Can only install one of: symfony/symfony v2.1.0-BETA1, symfony/symfony v2.0.15.
- don't install symfony/symfony v2.0.15|don't install symfony/dom-crawler v2.1.0-BETA1
- don't install symfony/dom-crawler 2.1.x-dev|don't install symfony/symfony v2.0.15
- Installation request for symfony/symfony == 2.0.15.0 -> satisfiable by symfony/symfony v2.0.15.
如果我正确理解错误,那是因为
fabbot/goutte
package依赖于Symfony 2.1软件包,而不适用于Symfony 2.0。如果我错了,请纠正我

这是我的
行为.yml

default:
    formatter:
      parameters:
        paths: false
     context:
      class: 'Site\PublicBundle\Features\Context\FeatureContext'
      parameters:
        base_url:  'http://test-anton.site.com'
    extensions:
      Behat\Symfony2Extension\Extension:
        mink_driver: true
        bundle: 'PublicBundle'
        kernel:
          env: test
          debug: true
      Behat\MinkExtension\Extension:
        default_session: symfony2
        base_url:  'http://test-anton.site.com'
这是我失败的例子:

Scenario: User can view homepage
    When I go to "/"
    Then the response code should be 200
当我转到“
”时,是一个MinkContext步骤,但是
“那么响应代码应该是200”
-是来自Behat\CommonContext\WebApicContext的步骤。当我只使用MinkContext中的步骤时-
“那么响应状态代码应该是200”
,它工作正常



最后的答案是,
Behat\CommonContexts\WebApiContext
与Behat 2.4不兼容。

可能是个愚蠢的问题,但您是否使用gout?我最近经历了一次类似的更新,我所需要的就是水貂浏览器套件驱动程序

我不知道为什么goutte依赖于2.1,在2.0中使用它可能会有风险。如果您确实需要它,请尝试在composer.json中为goutte定义一个自定义存储库(并谎报Symfony的要求)

更新

请注意,错误消息显示“调用成员函数getUri()”。它涉及:

这意味着客户机在那里,但getRequest()返回null。这表明该请求尚未提出

您在访问其URL之前是否发出请求


安装Goutte无法解决您的问题(您根本不需要它)。

事实上,mink browserkit驱动程序是Symfony2驱动程序的唯一要求,在大多数情况下,Symfony2驱动程序是由您与BehatBundle一起使用的。我现在不需要Goutte来满足我的需要。如果我只使用mink-browserkit驱动程序,那么我会遇到这个致命错误:在第124行的vendor/behat/mink-browserkit-driver/src/behat/mink/driver/BrowserKitDriver.php中对非对象调用成员函数getUri()。这意味着浏览器不是我希望安装goutte可以解决这个问题。有没有办法修复它?你能粘贴你的行为吗?您是否为Symfony2扩展启用了mink_驱动程序?谢谢更新@kuba。我的问题与痛风无关。我粘贴了失败场景和
behat.yml
,所以现在我想知道-在同一场景中不可能使用来自不同上下文的步骤吗?是的,可以混合来自不同上下文的步骤。WebApiContext尚未更新以使用Behat 2.4。我从来没有使用过WebApiContext,所以我不知道这是否是您遇到问题的原因。
public function getCurrentUrl()
{
     return $this->client->getRequest()->getUri();
}