4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Laravel/LumenでValidatorにモックを仕掛ける

Last updated at Posted at 2019-04-15

バリデーションにモックを仕掛ける

Laravel/LumenのValidatorクラスにはファサードが用意されています。ファサードには下記の説明にあるように最初からモックできるヘルパがあり、楽にモック化することができます。しかしValidatorに仕掛けるケースの記事がなかったので備忘録として。

Laravelにはイベント、ジョブ、ファサードを最初からモックできるヘルパが準備されています。これらのヘルパは主にMockery上で動作する便利なレイヤーを提供しているので、複雑なMockeryのメソッドコールを自分で作成する必要はありません。

実装

重要なのはバリデーションのmakeメソッドだけではなく、正常系確認用にあるpassesメソッドもつないで、返り値を設定することでバリデーションが実行される心配がなくなります。

ExampleTest.php
        Validator::shouldReceive('make->passes')
            ->once()
            ->andReturn(true);

        $response = $this->json('GET', /example, $param);

まとめ

今回はバリデーションでexistsルールを使ってテーブルに値があるか確認していて、APIのテスト時にはDBアクセスを避けたかったのでモックを利用してますが、他にも複雑なカスタムバリデーションなどを組んでいる時などにも良いと考えてます。(もちろん別途テストは必要)

4
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?