@Vocler

Как отправить POST запрос в codeception при помощи кнопки?

Есть страница со следующей кнопкой
<a href="/user/delete?id=1" data-method="post" id="mybutton"></a>


При клике на нее браузер отправляет запрос на /user/delete?id=1 с использованием метода POST. Затем на сервере выполняются некоторые действия, и в ответе он возвращает редирект обратно на страницу с кнопкой (/user)

Пытаюсь написать функциональный тест для вышеприведенной кнопки. Сейчас он выглядит так
public function deleteUser(\FunctionalTester $I)
    {
        $I->amOnRoute('user');
        $I->see('myuser_stay');
        $I->see('myuser_delete');

        $I->click('#mybutton');

        $I->see('myuser_stay');
        $I->dontSee('myuser_delete');
    }


Здесь должно произойти удаление пользователя myuser_delete, но не пользователя myuser_stay.

Пытаюсь запустить тест, вылетает с ошибкой на строке $I->see('myuser_stay');:
Fail  Failed asserting that  on page /user/delete?id=1
--> Method Not Allowed: Method Not Allowed. This URL can only handle the following request methods: POST.
--> contains "myuser_stay".


Судя по всему по каким-то причинам Codeception пытается отправить GET запрос на /user/delete?id=1, игнорируя data-method кнопки.

Вопросы:
1) Почему игнорируется data-method?
2) Каким образом это исправить? Конечно можно использовать $I->sendAjaxPostRequest(), и отправлять запрос напрямую, в обход кнопки, но как по мне это костыль.
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
TheRikipm
@TheRikipm
Backend middle
Возможно проблема в том что аттрибут data-method, обрабатывается JS, который в функциональных тестах не работает, соответственно и data-method игнорируется

Приемочные тесты этот момент нормально проходят?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы