2015-11-20 4 views
5

どうしたらshouldReceiveのshouldReturn値を更新できますか?モックの更新と返信

たとえば、1つの戻り値を使用するテストがいくつかあり、他の戻り値を使用するテストが1つしかありません。

だから私は、セットアップでこれを入れている:私はその特定のテストケースでこれを置く場合

​​

$this->someDependency->shouldReceive('someMethod')->andReturn(1); 

それは無視され、0が返されます。

私はこの動きをすべてのテストに固定し、setUpから削除しました。しかし、私はそのコードの重複が気に入らない。

+0

これは、0ではなく1を返すかどうかを判断する弁別子ですか?メソッドの引数データによって可能ですか?もしそうなら 'with()'メソッドをチェックしてください – Matteo

+1

実際に私はこのメソッドを引数なしで呼び出しています。この依存関係は、doctrineのリポジトリであり、このカウント方法です。なぜなら、引数に関係なく複数の値を持つことができるからです。 –

+0

[Mockery docs](http://docs.mockery.io/en/latest/reference/expectations.html)にあるように、 'andReturn(value1、value2、...)'メソッドを使用しようとしましたか? )? –

答えて

2

これは主にスタイルの問題です。テストで呼び出されるヘルパー関数でモックの「デフォルト」セットを簡単に作成し、別の方法でそれらを設定するより明示的な代替バージョンを簡単に作成できます。

でも、そのヘルパーでは、指定された値が特定のモックから戻ってくるための関数パラメータを持っています。

いくつかの人々は、各テストは、非常に共通する設定以外は完全に独立している必要があり、それ自体の中ですべてを行うべきだと考えている人もいます。これは何が起こっているのかを明確にしています(何が起きているのかははっきりしています)。しかし、コードの重複の可能性があります。しかし、あなたが自分自身をあまり反省したくないなら、それはあなたの選択です。

+0

アリスターに感謝、あなたは独立したテストについて正しいです。しかし、おそらく、私が受け入れるようにこの回答に印をつけていないのは、黙ってshouldReceiveを更新する方法があります。 –

関連する問題