我在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
类的成员?
或者有更好的方法吗?
答案 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();
// [...]
}