如何在 codeception 的 acceptance.suite.yml 中使用 PhpBrowser 的 "cookies" 设置?
How to use the "cookies" setting for PhpBrowser in codeception's acceptance.suite.yml?
我试过用谷歌搜索这个但找不到答案所以我在这里发帖。
我正在使用 PHP 5.5.9 在 Cloud9 IDE 上试用 codeception 2.1.5,查看编写验收测试并配置我的 acceptance.suite.yml 文件。
我正在尝试将 cookie 包含在 PhpBrowser 发出的请求中,如 codeception PhpBrowser page 中所述。我想我可以用 acceptance.suite.yml 中的 "cookies" 设置来做到这一点。
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
这是我的 HomepageCept.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 处理,而是传递给 Guzzle HTTP 客户端。
如果你 运行 你的测试和 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.
我认为 cookies 选项无法与 Guzzle 6 一起使用,因此我在 Github 中提出了这个问题:https://github.com/Codeception/Codeception/issues/2653。
我试过用谷歌搜索这个但找不到答案所以我在这里发帖。
我正在使用 PHP 5.5.9 在 Cloud9 IDE 上试用 codeception 2.1.5,查看编写验收测试并配置我的 acceptance.suite.yml 文件。
我正在尝试将 cookie 包含在 PhpBrowser 发出的请求中,如 codeception PhpBrowser page 中所述。我想我可以用 acceptance.suite.yml 中的 "cookies" 设置来做到这一点。
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
这是我的 HomepageCept.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 处理,而是传递给 Guzzle HTTP 客户端。
如果你 运行 你的测试和 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.
我认为 cookies 选项无法与 Guzzle 6 一起使用,因此我在 Github 中提出了这个问题:https://github.com/Codeception/Codeception/issues/2653。