Codeception api 套件,忽略重定向
Codeception api suite,Ignore redirect
我已经使用 codeception 来测试我用 symfony 框架编写的 api,我一直陷入一个问题,我的端点之一包含重定向。
我将如何处理重定向?
下面是我的代码片段
if ($request->get('error') == 'access_denied') {
$error = array(
'status' => $this->get(GenericConstants::TRANSLATOR)->trans('vk.page.error', array(), 'page'),
'code' => 400,
'channel' => 'VK',
'user_identifier' => '',
'profile_select' => 'true',
'process' => $process_type,
'message' => $this->get(GenericConstants::TRANSLATOR)->trans('vk.dashboard.error.userCancelled', array(), 'dashboard')
);
return **$this->redirect($setting_url . http_build_query($error));**
}
这是我的测试
$customer = $this->ui->getCustomer();
$user = $I->haveAVkUser();
$application = $I->haveAVkApplication($customer);
$owner = $I->haveAnOwner($customer, $this->ui);
$community = $I->haveACommunity($customer, $owner, array('communityType' => 0));
$I->sendGET(
'/oauth/callback',
[
"state" => strtr(base64_encode($community->getId(). "-new") , '+/=', '-_,'),
'code' => 404,
'error' => "access_denied"
]
);
$I->seeResponseCodeIs(\Codeception\Util\HttpCode::FOUND);
我希望我不应该从测试环境重定向
很好,您在这里使用了 REST 模块。
REST 模块有 stopFollowingRedirects 方法。
在 sendGET
调用之前使用它。
$I->stopFollowingRedirects();
$I->sendGET(
'/oauth/callback',
[
"state" => strtr(base64_encode($community->getId(). "-new") , '+/=', '-_,'),
'code' => 404,
'error' => "access_denied"
]
);
如果您需要在同一测试中重新启用重定向,
使用 $I->startFollowingRedirects();
我已经使用 codeception 来测试我用 symfony 框架编写的 api,我一直陷入一个问题,我的端点之一包含重定向。 我将如何处理重定向? 下面是我的代码片段
if ($request->get('error') == 'access_denied') {
$error = array(
'status' => $this->get(GenericConstants::TRANSLATOR)->trans('vk.page.error', array(), 'page'),
'code' => 400,
'channel' => 'VK',
'user_identifier' => '',
'profile_select' => 'true',
'process' => $process_type,
'message' => $this->get(GenericConstants::TRANSLATOR)->trans('vk.dashboard.error.userCancelled', array(), 'dashboard')
);
return **$this->redirect($setting_url . http_build_query($error));**
}
这是我的测试
$customer = $this->ui->getCustomer();
$user = $I->haveAVkUser();
$application = $I->haveAVkApplication($customer);
$owner = $I->haveAnOwner($customer, $this->ui);
$community = $I->haveACommunity($customer, $owner, array('communityType' => 0));
$I->sendGET(
'/oauth/callback',
[
"state" => strtr(base64_encode($community->getId(). "-new") , '+/=', '-_,'),
'code' => 404,
'error' => "access_denied"
]
);
$I->seeResponseCodeIs(\Codeception\Util\HttpCode::FOUND);
我希望我不应该从测试环境重定向
很好,您在这里使用了 REST 模块。
REST 模块有 stopFollowingRedirects 方法。
在 sendGET
调用之前使用它。
$I->stopFollowingRedirects();
$I->sendGET(
'/oauth/callback',
[
"state" => strtr(base64_encode($community->getId(). "-new") , '+/=', '-_,'),
'code' => 404,
'error' => "access_denied"
]
);
如果您需要在同一测试中重新启用重定向,
使用 $I->startFollowingRedirects();