Уважно подивившись на документацію HTTP-тестів Laravel, ви помітите кілька корисних помічників, вбудованих TestResponse
у клас для налагодження HTTP-відповідей. Цей клас нещодавно мав деякі внутрішні оновлення цих методів у вигляді Dumpable Trait у 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 легким.