私は、Mockitoのスパイのための方法をスタッフィングするために "Deep Stubs"を使用する方法を見つけることができませんでした。上記のコードは問題なくコンパイルしますが、テストを実行すると、それは(この場合はNameクラス、)戻り値の型ができないことを言って失敗しmockitoのスパイのためのAnswers.RETURNS_DEEP_STUBSに相当。
@Spy private Person person = //retrieve person
@Test
public void testStubbed() {
doReturn("Neil").when(person).getName().getFirstName();
assertEquals("Neil", person.getName().getFirstName());
}
:私は何を探していることは、このようなものですgetName()によって返されます。
通常、モック時には、模擬対象ごとに
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
を使用する必要があります。しかし、スパイのようなものはないようです。
スパイを使用して深いスタブをかけられた疑惑を成功させた人は誰ですか?
私が受けてるエラーを以下にリストされている:
String cannot be returned by getName()
getName() should return Name
Due to the nature of the syntax above problem might occur because of:
1. Multithreaded testing
//I'm not doing multithreaded testing
2. A spy is stubbed using when(spy.foo()).then() syntax. It is safer to stub spies with doReturn|Throw() family of methods
//As shown above, I'm already using the doReturn family of methods.
'@Mock Name name'から' = new Name() 'を削除する必要があります。とにかくMockitoは初期化時にその値を上書きします。 –
あなたは正しく、更新されました。私がこれを書いたときに変数宣言に多くの注意を払っていなかった。 –