POST-запрос имеет $_SERVER['REQUEST_METHOD'] = 'GET' в тестировании кодов Yii2

Я пытаюсь написать несколько приемочных тестов для приложения 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...

Пожалуйста, помогите мне понять, почему это происходит.

0 ответов

Может быть, причина в CSRF?

Yii2 документация CSRF

Предупреждение: отключение CSRF позволит любому сайту отправлять POST-запросы на ваш сайт. В этом случае важно реализовать дополнительную проверку, такую ​​как проверка IP-адреса или секретного токена.

Другие вопросы по тегам