いつもお世話になっております。
Mockeryでstaticメソッドをモックしたいのですが、表題のエラーが解消されずにおります。
テスト対象は以下のメソッドです
Use App\Model\MyModel class User extends Model { public static function search($id) { try { User::search($id); } catch (\Exception $e) { MyModel::staticMethod('test', ['foo' => 'bar']); //これをモックしたい } }
MyModelをモックして、staticMethod()が1度呼ばれることをテストしたいです。
そこで、以下のように記述しました。
public function search_test($id) { $mock = \Mockery::mock('overload:'. \App\Model\MyModel::class); $mock->shouldReceive('staticMethod')->once(); User::search($id); }
結果は、
Mockery\Exception\RuntimeException: Could not load mock App\Model\MyModel , class already exists
となってしまいます。
そこで
* @runInSeparateProcess * @preserveGlobalState disabled
を書き足したのですが、まだ class already exists のエラーは解消されませんでした。
UserModel内ではMyModelをnewしている箇所はなく、すでにnewされている箇所がどこかがわからず。。
こういった場合、どこを確認したら良いのでしょうか。
よろしくお願いいたします。
環境
Laravel 8
PHPUnit 9.5.18
Mockey 1
あなたの回答
tips
プレビュー