РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1262 of 1392 menu

Метод assertSent

Метод assertSent применяется к экземпляру фасада Http для проверки, был ли отправлен HTTP-запрос, соответствующий указанным критериям. Метод принимает замыкание, в котором можно задать условия для проверки запроса, или имя класса запроса. Если запрос не был отправлен или не соответствует условиям, тест проваливается. Метод обычно используется в связке с Http::fake для тестирования внешних HTTP-вызовов в приложении.

Синтаксис

<?php use Illuminate\Support\Facades\Http; Http::assertSent(Closure $callback); Http::assertSent(string $class); ?>

Первый параметр - замыкание, которое получает объект запроса и должно вернуть true при успешной проверке. Второй вариант - имя класса запроса, которое будет проверено на соответствие.

Пример

Давайте проверим, что в тесте был отправлен GET-запрос на указанный URL:

<?php use Illuminate\Support\Facades\Http; use Tests\TestCase; class ApiTest extends TestCase { public function test_http_request_sent() { Http::fake(); Http::get('https://api.example.com/users'); Http::assertSent(function ($request) { return $request->url() == 'https://api.example.com/users' && $request->method() == 'GET'; }); } } ?>

Пример

Проверим, что был отправлен POST-запрос с определёнными данными:

<?php use Illuminate\Support\Facades\Http; use Tests\TestCase; class ApiTest extends TestCase { public function test_post_request_with_data() { Http::fake(); Http::post('https://api.example.com/users', [ 'name' => 'John', 'email' => 'john@example.com' ]); Http::assertSent(function ($request) { return $request->url() == 'https://api.example.com/users' && $request['name'] == 'John' && $request['email'] == 'john@example.com'; }); } } ?>

Пример

Проверим, что запрос был отправлен с определёнными заголовками:

<?php use Illuminate\Support\Facades\Http; use Tests\TestCase; class ApiTest extends TestCase { public function test_request_with_headers() { Http::fake(); Http::withHeaders([ 'Authorization' => 'Bearer token123', 'Accept' => 'application/json' ])->get('https://api.example.com/users'); Http::assertSent(function ($request) { return $request->hasHeader('Authorization', 'Bearer token123') && $request->hasHeader('Accept', 'application/json'); }); } } ?>

Пример

Проверим количество отправленных запросов с помощью assertSent:

<?php use Illuminate\Support\Facades\Http; use Tests\TestCase; class ApiTest extends TestCase { public function test_multiple_requests_count() { Http::fake(); Http::get('https://api.example.com/users'); Http::get('https://api.example.com/users'); Http::get('https://api.example.com/posts'); $usersRequests = Http::assertSent(function ($request) { return str_contains($request->url(), '/users'); }); $res = $usersRequests; echo $res; } } ?>

Результат выполнения кода:

"2"

Пример

Проверим, что запрос не был отправлен с помощью отрицания:

<?php use Illuminate\Support\Facades\Http; use Tests\TestCase; class ApiTest extends TestCase { public function test_request_not_sent() { Http::fake(); Http::get('https://api.example.com/users'); $res = Http::assertSent(function ($request) { return $request->url() == 'https://api.example.com/posts'; }); // Запрос на /posts не отправлялся, поэтому assertSent вернет false echo $res ? "true" : "false"; } } ?>

Результат выполнения кода:

"false"

Смотрите также

  • метод fake,
    который создаёт поддельный HTTP-клиент для тестирования
  • класс Http,
    который предоставляет API для HTTP-тестирования
  • класс TestCase,
    который является базовым классом для всех тестов Laravel
  • класс RefreshDatabase,
    который сбрасывает состояние базы данных между тестами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить