如何从Codeception验收测试中访问变量命名的cookie?

时间:2014-05-03 14:57:30

标签: cookies selenium acceptance-testing codeception

我在Codeception中编写了一些验收测试,我想检查cookie是否存在。通常,您可以使用the seeCookie() method(例如$I->seeCookie( 'auth_logged_in' )执行此操作,但在我的情况下,Cookie的名称包含用户特定的哈希值(例如auth_logged_in_49d4ab732056d505c2c751e2f7a5d842)。

看起来现有的方法 - 比如WebGuy-> seeCookie(),WebGuy-> grabCookie()等 - 都希望我传递cookie的确切名称,而不是能够检查部分名称。

我查看了WebDriver->seeCookie()方法的工作原理,并调用了$this->webDriver->manage()->getCookies();,因此我尝试adding a WebHelper method创建了一个使用正则表达式检查Cookie的WebGuy->seeCookieMatches()方法名称,但它没有像$this->webDriver这样的WebDriver成员。

  

ErrorException:未定义的属性:Codeception \ Module \ WebHelper :: $ webDriver

WebHelper类是否有办法访问WebDriver类的成员?

或者有更好的方法吗?

1 个答案:

答案 0 :(得分:3)

我想通过使用the getModule() method来解决这个问题。

所以现在我的WebHelper方法如下所示:

public function seeCookieMatches( $pattern ) {
    // Codeception 2.x      
    $cookies = $this->getModule( 'PhpBrowser' )->client->getCookieJar()->all();

    // Codeception 1.x
    $cookies = $this->getModule( 'PhpBrowser' )->session->getDriver()->getClient()->getCookieJar()->all();

    // [...]
}