@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(), и отправлять запрос напрямую, в обход кнопки, но как по мне это костыль.
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
TheRikipm
@TheRikipm
Backend джун
Возможно проблема в том что аттрибут data-method, обрабатывается JS, который в функциональных тестах не работает, соответственно и data-method игнорируется

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

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

Войти через центр авторизации
Похожие вопросы
TREEDER Москва
от 170 000 до 300 000 ₽
Fort Financial Services Санкт-Петербург
от 100 000 до 150 000 ₽
РосТендер Москва
от 130 000 до 150 000 ₽