0

我正在尝试为 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 ......

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

4

1 回答 1

-1

也许原因是 CSRF?

Yii2 文档 CSRF

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

于 2019-01-22T11:37:22.270 回答