Если не удается инициализировать: Объявление клиента::CreateResponse() должно быть совместимо с CreateResponse()


Я пытаюсь настроить Behat, но он не запускается при запуске bin/behat --init. Мой composer.json взят из официальных документов:

{
    "require": {
        "behat/behat": "2.4.*@stable",
        "behat/mink": "1.4.*@stable",
        "behat/mink-extension": "*",
        "behat/mink-goutte-driver": "*",
        "behat/mink-selenium2-driver": "*"
    },
    "minimum-stability": "dev",
    "config": {
        "bin-dir": "bin/"
    }
}

composer install работает нормально и выглядит так, как будто все зависимости установлены.

# behat.yml
default:
  paths:
    features:  features
    bootstrap: features/bootstrap

  extensions:
    Behat\MinkExtension\Extension:
      base_url: http://en.wikipedia.org
      goutte: ~
      selenium2: ~

annotations:
  paths:
    features: features/annotations

closures:
  paths:
    features: features/closures 

Запуск # bin/behat --init приводит к следующей ошибке:

PHP Strict Standards:  Declaration of Behat\Mink\Driver\Goutte\Client::createResponse() should be compatible with Goutte\Client::createResponse(GuzzleHttp\Message\Response $response) in /web/Test-1/vendor/behat/mink-goutte-driver/src/Behat/Mink/Driver/Goutte/Client.php on line 23

Strict Standards: Declaration of Behat\Mink\Driver\Goutte\Client::createResponse() should be compatible with Goutte\Client::createResponse(GuzzleHttp\Message\Response $response) in /web/Test-1/vendor/behat/mink-goutte-driver/src/Behat/Mink/Driver/Goutte/Client.php on line 23


  [ReflectionException]
  Class Guzzle\Http\Client does not exist

Может кто-нибудь сказать мне, почему? Я сделал все точно так же, как в официальной статье.

Author: Ian Bytchek, 2014-10-14

1 answers

Вы используете несовместимые версии расширений/драйверов Mink. Ниже приведены последние версии, совместимые (прямо сейчас) с Behat 3 и Mink 1.6, в то время как вы хотите использовать гораздо более старые версии (2.4.* и 1.4.* соответственно).

"behat/mink-extension": "*",
"behat/mink-goutte-driver": "*",
"behat/mink-selenium2-driver": "*"

Я предполагаю, что вы вытащили это из Интернета, так как я не могу найти другого примера с фиксированными версиями, что довольно иронично, так как одни и те же люди, вероятно, одновременно ведут блоги о том, насколько плохая практика, которая является. Если вы только начинаете, я предлагаю вам придерживаться последних версий Behat и Mink, они намного лучше и были более чем стабильными в течение последних 6 месяцев. Измените файл composer.json и обновите зависимости:

"behat/behat": "*",
"behat/mink": "*"

Если нет, перейдите в репозиторий каждого расширения/драйвера и найдите помеченную версию с начала-середины 2013 года, которая должна исправить это для более старых пакетов.

Обновление

Предоставленный вами код не работает, потому что вы используете старый формат конфигурации с новой версией Behat/норки. Не забывайте, что конфигурации Behat 2 должны быть обновлены для Behat 3. Документация все еще довольно бедна, но основы довольно хорошо освещены здесь и здесь. Обновление конфигурации до этого устраняет проблему:

default:
  extensions:
    Behat\MinkExtension:
      base_url: http://en.wikipedia.org
      goutte: ~
      selenium2: ~

  suites:
    default:
      paths: 
        - '%paths.base%/features'

    annotations:
      paths:
        - '%paths.base%/features/annotations'

    closures:
      paths:
        - '%paths.base%/features/closures'

Вот упакованные файлы , на случай, если вы заблудитесь, команда init выдает следующее:

Ian-Bytcheks-MacBook-Pro:behat ianbytchek$ php ./vendor/bin/behat --init
+d features - place your *.feature files here
+d features/bootstrap - place your context classes here
+f features/bootstrap/FeatureContext.php - place your definitions, transformations and hooks here
+d features/annotations - place your *.feature files here
+d features/closures - place your *.feature files here

Обновление

Корнем всего зла был модуль curl, это не было установлено в среде автора. Вместо надлежащего предупреждения php попытался смягчить проблему, используя альтернативу, которая не очень помогла.

 1
Author: Ian Bytchek, 2014-10-14 23:04:14