REST 模块 get/set 个 cookie
REST module get/set cookie(s)
我正在使用 codeception REST 模块编写一些测试。
我正在进行的项目处于早期阶段,我们还没有实现基于令牌的身份验证;所以现在身份验证是通过 REST API 完成的,但它使用 $_SESSION
来实现持久性。
为了测试经过身份验证的请求,我需要保留 PHPSESSID
cookie 并在每个请求中发送它。在使用 REST 模块时有没有办法 read/set cookie?
好的,我找到了解决方案。我的套件名称是 api
,因此 codeception 在 tests/_support/Helper/Api.php
生成了一个文件。在此处进行更改之前,我必须编辑我的套件 YAML 文件 api.suite.yml
以启用帮助程序。我的 YAML 文件如下所示:
class_name: ApiTester
modules:
enabled:
- REST:
depends: PhpBrowser
url: https://website.com/api/
part: Json
- \Helper\Api
现在该文件已启用,运行 codecept build
以便它更新生成的文件以读取您的助手。
在 Api
助手 class 中,我添加了两个方法:
public function capturePHPSESSID()
{
$cookie = $this->getClient()->getCookieJar()->get('PHPSESSID');
echo "Cookie: ", $cookie;
}
/**
* @return \Symfony\Component\HttpKernel\Client|\Symfony\Component\BrowserKit\Client $client
*/
protected function getClient()
{
return $this->getModule('REST')->client;
}
这就是您读取 PHPSESSID cookie 所需的全部内容!随意捕获它,这样您就可以编写一个方法来通过设置调用 $this->getClient()->getCookieJar()->set(....)
来重新使用它
我正在使用 codeception REST 模块编写一些测试。
我正在进行的项目处于早期阶段,我们还没有实现基于令牌的身份验证;所以现在身份验证是通过 REST API 完成的,但它使用 $_SESSION
来实现持久性。
为了测试经过身份验证的请求,我需要保留 PHPSESSID
cookie 并在每个请求中发送它。在使用 REST 模块时有没有办法 read/set cookie?
好的,我找到了解决方案。我的套件名称是 api
,因此 codeception 在 tests/_support/Helper/Api.php
生成了一个文件。在此处进行更改之前,我必须编辑我的套件 YAML 文件 api.suite.yml
以启用帮助程序。我的 YAML 文件如下所示:
class_name: ApiTester
modules:
enabled:
- REST:
depends: PhpBrowser
url: https://website.com/api/
part: Json
- \Helper\Api
现在该文件已启用,运行 codecept build
以便它更新生成的文件以读取您的助手。
在 Api
助手 class 中,我添加了两个方法:
public function capturePHPSESSID()
{
$cookie = $this->getClient()->getCookieJar()->get('PHPSESSID');
echo "Cookie: ", $cookie;
}
/**
* @return \Symfony\Component\HttpKernel\Client|\Symfony\Component\BrowserKit\Client $client
*/
protected function getClient()
{
return $this->getModule('REST')->client;
}
这就是您读取 PHPSESSID cookie 所需的全部内容!随意捕获它,这样您就可以编写一个方法来通过设置调用 $this->getClient()->getCookieJar()->set(....)