0
0

More than 1 year has passed since last update.

【PHPUnit】例外のテストは$this->expectException()を先に書く

Last updated at Posted at 2022-06-30

環境

Laravel v9.5.1 (PHP v8.1.3)

前提条件

UserRole1~3までEnumで定義されてるところに、存在しない4を入れてエラーが起きることをテストしたい。

テスト方法

例外のテストは、テストしたいメソッドより先に書く。

理由はテストしたいメソッドを先に書くと、そこで例外が発生しエラーで落ちるから。
少し考えれば当たり前なんだけど、普段テストを書きまくっているとつい最後に書くものと思い込んでしまっていた。
expectException「エラーを期待する」という命名からも先に書くことは予想できる。

public function testError()
{
  $this->expectException(ValueError::class);

  UserRole::from(4);
}

RailsのRSpecでは

expectのブロックの中にテストしたいメソッドを書くことで例外の発生をテストできる。

subject { instance.method }
expect { subject }.to raise_error(MyError)

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0