Метод assertNotFound
Метод assertNotFound применяется к экземпляру TestResponse
и проверяет, что HTTP-ответ имеет статус 404.
Это удобно для тестирования ситуаций, когда запрашиваемый ресурс
не найден, например, при обращении к несуществующей записи
в базе данных или к неправильному URL-адресу.
Метод не принимает никаких параметров и возвращает тот же
экземпляр ответа для построения цепочек вызовов.
Синтаксис
<?php
$this->get($uri)->assertNotFound();
?>
Пример
Давайте протестируем, что при обращении к несуществующей статье
возвращается статус 404. Для этого в тестовом методе
мы отправим GET-запрос по пути с невалидным идентификатором:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
class ArticleControllerTest extends TestCase
{
public function test_non_existent_article_returns_not_found()
{
$response = $this->get('/api/articles/99999');
$response->assertNotFound();
}
}
?>
Результат выполнения кода:
"Test passed: response status is 404"
Пример
Теперь проверим ситуацию, когда статья существует, но запрос
выполняется к неправильному маршруту. Метод assertNotFound
успешно отработает, если сервер вернёт статус 404:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class RouteTest extends TestCase
{
public function test_invalid_route_returns_not_found()
{
$response = $this->get('/non-existent-page');
$response->assertNotFound();
}
public function test_invalid_api_endpoint_returns_not_found()
{
$response = $this->getJson('/api/invalid/endpoint');
$response->assertNotFound();
}
}
?>
Результат выполнения кода:
"All tests passed: 404 responses verified"
Пример
Метод assertNotFound можно использовать в цепочке
с другими методами для более детальной проверки ответа.
Например, проверим, что возвращается статус 404
и при этом в JSON-ответе есть ожидаемое сообщение об ошибке:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
class ArticleControllerTest extends TestCase
{
public function test_not_found_article_returns_error_message()
{
$response = $this->getJson('/api/articles/99999');
$response->assertNotFound()
->assertJson([
'message' => 'Article not found'
]);
}
}
?>
Результат выполнения кода:
"Test passed: response is 404 and contains error message"
Смотрите также
-
метод
assertStatus,
который проверяет произвольный HTTP-статус ответа -
метод
assertOk,
который проверяет статус 200 OK -
метод
assertCreated,
который проверяет статус 201 Created -
метод
assertForbidden,
который проверяет статус 403 Forbidden