Mockito의 스파이에서 스터 빙 방법에 "딥 스텁"을 사용할 수있는 방법을 찾을 수 없었습니다. 내가 뭘 찾고 있어요 것은이 같은 것입니다 :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)
을 사용해야합니다. 그러나 스파이는 이와 같은 것을 가지지 않습니다.
누구도 스파이를 사용하여 깊은 스터 빙 된 조롱을 성공적으로 마쳤습니까?
I 받고있어 오류가 아래와 같이 표시됩니다, 내가 오는 사람을위한 솔루션을 게시하고 싶습니다 나는 아직도이 할 수있는 더 좋은 방법이 있는지 알고 싶습니다 동안
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는 초기화시 그 값을 덮어 씁니다. –
맞습니다. 업데이트되었습니다. 이 선언문을 작성할 때 변수 선언에 많은주의를 기울이지 않았습니다. –