Отправка тестовой формы PEST 4 из Javascript с использованием Fetch APIJavascript

Форум по Javascript
Ответить
Anonymous
 Отправка тестовой формы PEST 4 из Javascript с использованием Fetch API

Сообщение Anonymous »

Я добавляю тесты браузера в приложение Laravel 12 с использованием PEST 4. Это старое приложение, которое было перенесено в последнюю версию Laravel.
Я хочу протестировать некоторые страницы, на которых есть формы, отправляемые с использованием Javascript Fetch API и объекта FormData.
Функциональность работает хорошо в браузере, но когда я выполняю отправку формы из PEST, конечная точка, получающая запрос, не видит прикрепленную форму данные.
Я сузил его до простого примера, чтобы показать проблему.
Контроллер:

Код: Выделить всё

class TestController
{
public function test(Request $request): View|JsonResponse
{
if ($request->isMethod('POST')) {
return response()->json(['message' => $request->get('test_input', 'No input provided')]);
}

return view('test');
}
}
Просмотр:

Код: Выделить всё


Test page


Test


document.getElementById('test-btn').addEventListener('click', () => {
const formData = new FormData();
formData.append('test_input', 'Hello from JS!');

fetch('/test', {
method: 'POST',
body: formData
})
.then(async response => {
const respJson = await response.json();
document.getElementById('response').innerHTML = respJson.message;
});
});



Когда я нажимаю кнопку «Тест» в браузере, я вижу: «Привет от JS!»
Когда я запускаю следующий PEST-тест...

Код: Выделить всё

it('test js fetch', function () {
$page = visit('/test');

$page->click('Test')
->assertSee('Hello from JS!')
->screenshot();
});
Тест завершается неудачей со следующим сообщением:

Код: Выделить всё

 FAILED  Tests\Browser\TestTest > it test js fetch
Expected to see text [Hello from JS!] on the page initially with the url [http://php:47865/test], but it was not found or not visible. A screenshot of the page has been saved to [Tests/Browser/Screenshots/it_test_js_fetch].

at tests/Browser/TestTest.php:7
3▕ it('test js fetch', function () {
4▕     $page = visit('/test');
5▕
6▕     $page->click('Test')
➜   7▕         ->assertSee('Hello from JS!')
8▕         ->screenshot();
9▕ });
10▕

На скриншоте текст: «Ввод не предоставлен».
Кто-нибудь сталкивался с этой проблемой и может порекомендовать решение?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -fetch-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»