• Час читання ~1 хв
  • 11.02.2024

Уважно подивившись на документацію 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 легким.

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