POST请求在Yii2代码接收测试中具有$ _SERVER ['REQUEST_METHOD'] ='GET'

时间:2018-10-20 09:29:23

标签: testing yii2 codeception acceptance

我正在尝试为yii2应用程序编写一些验收测试。

我的SiteController有一些动作,其中包括以下代码:

if (!Yii::$app->request->isPost) {
        throw new NotFoundHttpException('Unexpected GET method');
    }

当我尝试测试此操作时-总是失败,因为我的POST请求未通过此检查Yii :: $ app-> request-> isPost。他们总是使用$ _SERVER ['REQUEST_METHOD'] ='GET'而不是POST。

我尝试了这种变体:

$I->sendPOST($url, $options)

$I->sendAjaxPostRequest($url, $options)

我也试图在Helper中进行这样的自定义操作

public function makePOST($url, $params = []) {
    $this->getModule('PhpBrowser')->_loadPage('POST', $url, $params);
}

然后从我的测试中调用它。 在所有情况下,我都会收到GET请求而不是POST ...

请帮助我理解为什么会发生。

1 个答案:

答案 0 :(得分:-1)

也许是CSRF的原因?

Yii2 documentation CSRF

  

警告:禁用CSRF将允许任何站点将POST请求发送到您的站点。在这种情况下,进行额外的验证(例如检查IP地址或秘密令牌)非常重要。