Внимательно изучив документацию 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.