Если не удается инициализировать: Объявление клиента::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
Может кто-нибудь сказать мне, почему? Я сделал все точно так же, как в официальной статье.
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 попытался смягчить проблему, используя альтернативу, которая не очень помогла.