В Laravel для написания HTTP тестов используется фреймворк PHPUnit, который предоставляет набор инструментов для написания и выполнения тестов в PHP. Файлы тестов в Laravel находятся в каталоге tests
, структура которого должна быть следующей:
tests/ Feature/ ExampleTest.php Unit/ ExampleTest.php
В каталоге tests/Feature
располагаются HTTP-тесты, которые проверяют функциональность приложения с использованием HTTP запросов. В каталоге tests/Unit
находятся модульные тесты, в которых проверяется функциональность отдельных классов и методов.
Пример HTTP теста в Laravel выглядит следующим образом:
<?php namespace TestsFeature; use IlluminateFoundationTestingRefreshDatabase; use TestsTestCase; class ExampleTest extends TestCase { use RefreshDatabase; public function testExample() { // Отправляем HTTP запрос GET на указанный маршрут $response = $this->get('/'); // Проверяем, что ответ имеет код 200 (ОК) $response->assertStatus(200); // Добавляем дополнительные проверки // ... } }
В данном примере мы создаем новый HTTP тест класс ExampleTest
в пространстве имен TestsFeature
. Класс наследуется от TestCase
, который является базовым классом из фреймворка PHPUnit.
Для отправки HTTP запроса в тесте мы используем метод get('/path')
, где /path
- это путь к маршруту, который мы хотим протестировать. Метод assertStatus(200)
проверяет, что полученный ответ имеет код 200 (ОК), иначе тест не будет пройден.
Кроме проверки статуса ответа, в Laravel также доступно множество различных методов для проверки различных аспектов HTTP ответа, таких как проверка наличия определенного текста или заголовка в ответе, проверка формата ответа в JSON и другие.
Более подробную информацию о доступных методах и возможностях для тестирования HTTP запросов в Laravel можно найти в официальной документации Laravel: https://laravel.com/docs/8.x/http-tests