如何在codeception的acceptance.suite.yml中使用PhpBrowser的“cookies”设置?

时间:2015-12-21 23:06:32

标签: php cookies cloud9-ide codeception

我尝试使用谷歌搜索,但我无法找到答案,所以我在这里发帖。

我正在尝试使用PHP 5.5.9在Cloud9 IDE上编写代码2.1.5,查看编写验收测试,并配置我的acceptance.suite.yml文件。

我正在尝试在codeception PhpBrowser page中描述的PhpBrowser请求中包含cookie。我以为我可以使用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

这个的正确语法是什么?

1 个答案:

答案 0 :(得分:0)

Cookies参数不由PhpBrowser处理,而是传递给Guzzle HTTP Client。

如果您运行测试和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