overloadとは
該当するクラスのインスタンスが作成されたときに、そのインスタンスをモックオブジェクトにすり替えるよ!
Mockery::mock('overload:' . User::class);
これなら、ユーザークラスのインスタンスが作られたら、モックオブジェクトのインスタンスに変わってるよ!
テストコードがおかしい説
これを使う状態って、テストコードがおかしいって一回疑ってもいいのかな?って思っています。
$xxx = $this->xxx_repository->get();
このときは、xxx_repositoryをモックして、そのreturn値をモックオブジェクトにしたり、
xxx_repositoryのstubをいい感じに作ってやるとか。
元コードがおかしい説
$xxx = new User();
ほら、ここでインスタンス化してるからoverloadしかなくないか?
って話だとしたら、その関数でUserインスタンスをインスタンス化するコードでいいの?とか。
例えばインスタンスを生み出すところを、ラップ関数にしてやるとか。
Userがモデルインスタンスとかなら、そもそもリポジトリに書いてやるべきとか。
関数内でnewすべき場合もあるかもですが、一度疑ってみてもいいかも
overloadのままじゃ困るのは?
テストする関数外に対して、そのテストコードは干渉してたりしないかなとか。
あと、その後のテストがoverloadに依存してしまってるとかすると、各関数単体でテスト出来ないとか。
依存するのが正しいのであればいいですが、ちょっと見直してみてもいいかも。