⚒️

Laravel 8.51 で、テスト時の withoutExceptionHandling() の呼び出しが、かなり不要になった

2021/08/17に公開

本題

Feature テスト時、ステータスコードを調べる際に、プログラム内部で500エラーが発生していると、その原因を調べる為に、

$this->withoutExceptionHandling();

とメソッド上部に書いたりして、原因を把握したりしたものでした。

エディタの補完も利くし、慣れていれば、まぁさほど面倒には感じていませんでしたが、やはり地味に面倒だった事は確かです。これが、Ver.8.51からは、かなり不要になりました。ステータスコードを調べるアサーション(例:assertStatus()、assertOk() 等)を記述していて、500エラーが発生した際は、エラー原因(stack trace)をドカンと出してくれるようになりました。

参考:Track Exceptions and Display Them in Failed Tests

ただ、500エラー以外のステータスコードの不一致時や、そもそもデバッグ目的ではなく、例外のテストを行う場合なんかでは、まだ活躍の場もあったりはします。

しかしこのメソッド、テスト時はかなり必須でありながら、未だにドキュメントには載ってないんですね…。 2021年10月に載りました。

雑談モード

Laravel 5.5で、$this->withoutExceptionHandling(); が登場した訳ですが、このメソッドのオリジナルは、Tailwind CSS の作成者の Adam Wathan 氏なんですね。

テストの神様という異名?を持つ方ですが、何故か今は、CSS に行ってしまいました。
彼の「テスト講座」は、Laravel界隈では有名で、彼はこの講座や他の講座で一儲けして、会社を辞めて、今はオープンソース系に専念している訳ですね。

参考:https://adamwathan.me/2016/01/21/disabling-exception-handling-in-acceptance-tests/
参考:https://laravel-news.com/testing-laravel-middleware

Discussion