Я попытался найти это, но не смог найти ответ, поэтому я пишу здесь.
Я испытываю кодирование 2.1.5 в Cloud9 IDE с использованием PHP 5.5.9, смотрю на написание приемочных тестов и настраиваю свой файл accept.suite.yml.
Я пытаюсь включить cookie в запрос, сделанный PhpBrowser, как описано в кодовая страница PhpBrowser. Я думал, что смогу сделать это с настройкой «куки» в accept.suite.yml.
acceptance.suite.yml
# Codeception Test Suite Configuration
#
# Suite for acceptance tests.
# Perform tests in browser using the WebDriver or PhpBrowser.
# If you need both WebDriver and PHPBrowser tests - create a separate suite.
class_name: AcceptanceTester
modules:
enabled:
- PhpBrowser:
url: https://dm1-cboudreausf.c9users.io
cookies:
c9_user_cookie:
Name: c9.live.user.sso
Value: somevaluehere
Path: /
Domain: .c9users.io
- \Helper\Acceptance
Вот моя домашняя страницаCept.php:
<?php
$I = new AcceptanceTester($scenario);
$I->wantTo('ensure the homepage renders correctly');
$I->amOnPage('/');
$I->see('welcome');
Но когда я запускаю свой тест в режиме отладки, как это:
php codecept.phar run --debug
Я вижу, что нет файлов cookie запроса:
Ensure the homepage renders correctly (HomepageCept)
Scenario:
* I am on page "/"
[Page] /
[Response] 302
[Request Cookies] []
[Response Headers] {"Location":["https://c9users.io/_user_content/authorize?redirect=https%3A%2F%2Fdm1-cboudreausf.c9users.io%2F"],"Date":["Mon, 21 Dec 2015 22:38:44 GMT"],"Transfer-Encoding":["chunked"],"X-BACKEND":["apps-proxy"],"Content-Type":["text/html"]}
[Redirecting to] https://c9users.io/_user_content/authorize?redirect=https%3A%2F%2Fdm1-cboudreausf.c9users.io%2F
Какой правильный синтаксис для этого?
Параметр Cookies не обрабатывается PhpBrowser, но передается в HTTP-клиент Guzzle.
Если вы запускаете свой тест и PHP 5.4, то вы используете Guzzle 5.3, http://docs.guzzlephp.org/en/5.3/clients.html?highlight=cookies
Types: bool / array / GuzzleHttp\Cookie\CookieJarInterface
Я не знаю, работает ли используемый вами формат с Guzzle 5.3, но пары ключ-значение должны работать
cookies:
'c9.live.user.sso': 'somevaluehere'
Если вы запускаете свой тест на более новой версии PHP, то вы, вероятно, используете Guzzle 6
http://docs.guzzlephp.org/en/latest/request-options.html#cookies
You must specify the cookies option as a GuzzleHttp\Cookie\CookieJarInterface or false.
Я не вижу возможности, чтобы опция cookie могла работать с Guzzle 6, поэтому я поднял проблему в Github: https://github.com/Codeception/Codeception/issues/2653.
Других решений пока нет …