2017-09-27 13 views
0

私がテストしたいクラスがかなり複雑な別のクラスを拡張しているという状況が悪いです。public staticメソッド。親クラスが必要とされる他のクラスを拡張していない場合、このような問題はありません。具体的には、まだ拡張するには\Illuminate\Database\Eloquent\Modelが必要です。これをテストしやすくするために、可能なリファクタに関して私の手は結びついています。PHPUnit - 親クラス全体をどのようにスタブするのですか?

Modelクラスの実行を許可しながら、問題のクラスの親をスタブまたは変更する方法はありますか?

答えて

2

おそらくあなたがテストしているクラスを拡張するYourClassTestCaseを作成することができます。次に、YourClassTestCaseで簡略化された戻り値を使用して静的メソッドをオーバーライドし、YourClassTestCase以上のテストを開始します。

だからYourTest - >yourClassTestCase - >YourClass - >ParentWithStaticMethodとなります。

0

モックオブジェクトを使用する必要があります。 ここをクリックしてください:https://phpunit.de/manual/current/en/test-doubles.html#test-doubles.mock-objects

+0

標準的なモックはここではトリックをしません。私は親クラスを完全にスタブする方法を見つけなければなりませんし、祖父母を守ったり、親を別の親に置き換える方法を見つけなければなりません。 'alias'のスコープを親だけに隔離することができれば、親クラスで単一静的メソッドをスタブしようとするとうまくいくでしょう。 –

関連する問題