Норка-ГОУТТА-водитель. Не могу установить fabpot/goutte на Symfony 2.0

Я использую композитор с 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.

1 ответ

Решение

Может быть глупый вопрос, но вы используете гутку? Недавно я прошел через подобное обновление, и мне понадобился mink-browserkit-driver.

Я не уверен, почему у goutte есть зависимость от 2.1, и это может быть рискованно использовать с 2.0. Если вам это действительно нужно, попробуйте определить собственный репозиторий для goutte в вашем composer.json (и лгать о требованиях к Symfony).

Обновить

Обратите внимание, что сообщение об ошибке гласит " Вызов функции-члена getUri () ". Это относится к getCurrentUri ():

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

Это означает, что клиент есть, но getRequest() возвращает ноль. Это говорит о том, что запрос еще не сделан.

Вы сделали запрос перед доступом к его URL?

Установка Goutte не решит вашу проблему (она вам вообще не нужна).

Другие вопросы по тегам