programing

호출되지 않은 객체의 메서드를 확인하는 방법은 무엇입니까?

bestcode 2022. 11. 27. 11:34
반응형

호출되지 않은 객체의 메서드를 확인하는 방법은 무엇입니까?

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

반응형