• Время чтения ~1 мин
  • 11.02.2024

Внимательно изучив документацию Laravel по HTTP-тестам, вы заметите некоторые полезные помощники, встроенные в TestResponse класс для отладки HTTP-ответов. В этом классе недавно были некоторые внутренние обновления этих методов в виде дампируемого типажа Laravel 11, и я подумал, что было бы неплохо вернуться к этим полезным помощникам:У этих методов тоже есть dd() аналог, который будет "умирать и сбрасывать" значения ответа:Эти методы являются полезными сокращениями для того, чтобы просто сделать это самостоятельно в тесте:

$response = $this->get('/');

$response->dump();
$response->dumpHeaders();
$response->dumpSession();

$response->dd();
$response->ddHeaders();
$response->ddSession();

dump($response->headers->all());
// or
dd($response->headers->all());

Тем не менее, эти методы отлично подходят, когда вы модифицируете существующий тест, который связывает различные утверждения в цепочку экземпляраTestResponse:

$this->postJson(route('post.store', $post))
    ->assertSessionHasNoErrors()
    ->assertCreated()
    ->assertJson(['created' => true]);

Допустим, это assertSessionHasNoErrors() не удается, и я хочу выполнить отладку. Я заметил, что когда я сталкиваюсь с цепочкой, которая не присваивает ответ, я присваиваю ответ локальной переменной следующим образом:

$response = $this->postJson(route('post.store', $post));

dd($response);

$response
    ->assertSessionHasNoErrors()
    ->assertCreated()
    ->assertJson(['created' => true]);

Я не буду спорить о том, следует ли вам создавать цепочки утверждений и никогда не назначать локальную переменную — это скорее предпочтение стиля — но вы столкнетесь с ситуациями, когда локальная переменная не назначена. Используя эти методы отладки, мы можем быстро выполнить отладку прямо перед сбоем теста:Эти помощники отладки удобны, когда вы хотите отладить ответ где-то между различными утверждениями,

$this->postJson(route('post.store', $post))
+   ->dumpSession()
    ->assertSessionHasNoErrors()
    ->assertCreated()
    ->assertJson(['created' => true]);

не захватывая TestResponse экземпляр в локальную переменную.

Подробнее Эти

функции (и многое другое) описаны в документации Laravel для HTTP-тестов вместе с другими полезными TestResponse функциями, которые упрощают утверждение JSON.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Об авторе CrazyBoy49z
WORK EXPERIENCE
Контакты
Ukraine, Lutsk
+380979856297