🤡

Laravelのファサードでパーシャルモックを使う

2023/09/14に公開

はじめに

ふと、テストを書いていた時に無理やり例外を発生させてcatch後の処理のテストを書いたいと思った時に試したことのメモです。

環境

  • PHP 8.2.10
  • Laravel 10.23.0
  • Mockery 1.6.6

試したこと

つぎのように書くだけです。

use Exception;
use Illuminate\Support\Facades\DB;

DB::shouldReceive('commit')->andThrow(new Exception('例外'));
DB::makePartial();

LaravelのファサードはshouldReceiveメソッドを使うと引数に指定したメソッドをモックにできます。

そのあとで、makePartialメソッド使うことでshouldReceiveメソッドで指定したメソッド以外は通常通りの呼び出しで動いてくれます。

参考

https://github.com/mockery/mockery/issues/242
https://stackoverflow.com/questions/21107231/how-can-i-specify-partial-mockup-for-a-laravel-facade

Discussion