【问题标题】:mink-goutte-driver. Can't install fabpot/goutte on Symfony 2.0水貂痛风司机。无法在 Symfony 2.0 上安装 fabpot/goutte
【发布时间】:2012-06-28 22:48:50
【问题描述】:

我正在使用带有 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 update --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.

如果我正确理解错误,那是因为fabpot/goutte 包依赖于 Symfony 2.1 包并且不适用于 Symfony 2.0。如果我错了,请纠正我。

这是我的behat.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

"When I go to" - 是 MinkContext 步骤,但 "Then the response code should be 200" - 是来自 Behat\CommonContexts\WebApiContext 的步骤。当我只使用 MinkContext 中的步骤时 - "Then the response status code should be 200" 它工作得很好。


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

【问题讨论】:

    标签: symfony composer-php behat mink goutte


    【解决方案1】:

    可能是一个愚蠢的问题,但你使用 goutte 吗?我最近进行了类似的更新,我只需要 mink-browserkit-driver。

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

    更新

    请注意,错误消息显示“调用成员函数 getUri()”。与getCurrentUri()有关:

    public function getCurrentUrl()
    {
         return $this->client->getRequest()->getUri();
    }
    

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

    您在访问其 URL 之前是否提出过请求?

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

    【讨论】:

    • 事实上,mink-browserkit-driver 是 Symfony2 驱动程序的唯一要求,大多数情况下您都使用 BehatBundle。
    • 我现在真的不需要 goutte 来满足我的需要。如果我只使用 mink-browserkit-driver,那么我会收到这个致命错误:Call to a member function getUri() on a non-object in vendor/behat/mink-browserkit-driver/src/Behat/Mink/Driver/BrowserKitDriver .php 在第 124 行。这意味着浏览器不是我希望安装 goutte 可以解决这个问题。任何想法如何解决它?
    • 你能粘贴你的 behat.yml 吗?你为你的 Symfony2 扩展启用了 mink_driver 吗?
    • 感谢更新,@kuba。我的问题与痛风无关。我粘贴了失败的场景和behat.yml,所以现在我想知道 - 是否可以在同一场景中使用来自不同上下文的步骤?
    • 是的,可以混合来自不同上下文的步骤。 WebApiContext 尚未更新为与 Behat 2.4 一起使用。我从未使用过 WebApiContext,所以我无法判断这是否是您遇到问题的原因。
    猜你喜欢
    • 2017-10-08
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    相关资源
    最近更新 更多