最近私はいくつかのjUnitとMockitoの質問に尋ねましたが、私はまだそれをやり遂げるのに本当に苦労しています。チュートリアルはすべて非常に簡単な例ですので、私のクラスで動作するようにテストケースをスケールアップするのには苦労しています。Mockitoを使ってスタブを実行し、テストのためのメソッドを実行する
私は現在、Webアプリケーションのエージェントの1つにあるメソッドのテストケースをいくつか記述しようとしています。このメソッドは、エージェント内のいくつかのオブジェクトを検証するために、他のいくつかのメソッドと対話します。私はちょうど今この1つの方法をテストしたいと思う。
は、ここで私が何をしようとしているものです:
- がそうのように私のエージェントのMockitoオブジェクトを作成します。Mockitoを使用して
MyProcessingAgent mockMyAgent = Mockito.mock(MyProcessingAgent.class);
セットアップスタブ(うまくいけば右項)。そんなとき:
ので、私のような方法を実行してみてください。
List myReturnValue = mockMyAgent.methodThatNeedsTestCase();
私はmyReturnValue
で物事に期待し、私は、デバッグしようとしたので、代わりに0を受信しました。メソッドを呼び出すと、決して実行されません。メソッドの最初の行には触れないデバッグポイントがあります。
クラスの1つのメソッドでコードを実行したいが、偽装された値を返すために、クラス内の他のメソッド(外部のデータベースとやりとりする)が必要な場合。これはMockitoで可能ですか?
私の現在のアプローチ方法は正しいテストスタイルではありませんが、私はどのように前進するかはわかりません。私のクラスを模擬し、普通のように1つのメソッドを実行させることができますか?このメソッドのテスト中にデータアクセスを処理する必要がないように、他のメソッドをスタブして指定した値を返すことはできますか?
スパイについての私の声明を見て、あなたが同意しない場合は教えてください。 –
@JohnBあなたは正しいと思います。私は答えによって拡大しました。 OPがメソッドを内部的に呼び出すことはわかりませんでした。 –
詳細な説明をお寄せいただきありがとうございます。だから、両方の答えが(明確にするために)推薦しているのは、私がMockで間違ったクラスを攻撃しているということです。代わりに私はクラスに必要なすべてのデータアクセスオブジェクトを嘲笑してから、テストのためにクラスの通常のインスタンスを使用する必要があります。 – Kyle