반응형
호출되지 않은 객체의 메서드를 확인하는 방법은 무엇입니까?
mockito는 모의 객체의 메서드가 호출되는지, 그리고 모의 객체는 항상 다음과 같은 것을 가지고 있는지 확인하는 것 같습니다.doReturn().when(mock object)
하지만 모의 개체를 만들고doReturn().when(mock object)
다른 객체의 메서드가 호출되었는지 확인합니다.
제가 하고 싶은 일은 다음과 같습니다.모크 환경을 정의하고 무슨 일이 있어도 응답을 반환합니다.다른 경우 anotherObj의 다른 메서드가 호출되는지 확인하고 싶습니다.
어떻게 하는 거야?
public class BaseClass {
private Environment mockEnvironment;
@Test
public void testcase () {
setMockitoEnvironment();
response = foo(mockEnvironment, argument1);
verify(anotherObj).codePath1(...);
response = foo(mockEnvironment, argument2);
verify(anotherObj).codePath2(...);
}
}
//this method successfully return a response with any input
//because I do not care how response is eventually generated,
//I only care whether code path reaches createResponse() via
//code path 1 or code path 2.
private void setMockitoEnvironment() {
mockEnvironment = mock(Environment.class);
doReturn (response).when(mockEnvironment).createResponse(for any input);
}
private Response foo(...) {
...
return createResponse(...);
}
모키토 스파이를 쓰면 돼셋업하는 경우anotherObj
스파이로서 그 오브젝트에 대한 메서드 호출을 확인할 수 있습니다.이 예에서는, 다음의 콜을 실시할 필요가 있습니다.foo
통상적인 실장 대신에 스파이를 사용한다.anotherObj
스파이는 다음과 같이 설정되어 있습니다.
AnotherClass anotherObjSpy = Mockito.spy(new AnotherClass());
// do stuff -- e.g. anotherObjSpy.foo(...);
verify(anotherObjSpy).codePath1(...);
Mock이 아닌 오브젝트에 주석을 붙입니다.@Spy
주석 후 확인verify()
이것 좀 봐.
언급URL : https://stackoverflow.com/questions/31039283/how-to-verify-a-method-of-a-non-mock-object-is-called
반응형
'programing' 카테고리의 다른 글
사전에서 요소 삭제 (0) | 2022.11.27 |
---|---|
과학 프로그래머를 위한 독서 목록 (0) | 2022.11.27 |
google chrome 확장자 :: console.log()를 백그라운드페이지에서 사용하시겠습니까? (0) | 2022.11.27 |
MySQL 테이블에 인덱스를 추가하려면 어떻게 해야 합니까? (0) | 2022.11.27 |
공백 공간을 언더스코어로 대체하려면 어떻게 해야 합니까? (0) | 2022.11.27 |