Есть страница со следующей кнопкой
<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()
, и отправлять запрос напрямую, в обход кнопки, но как по мне это костыль.