반응형
모의가 아닌 객체의 메서드가 호출되었는지 확인하는 방법은 무엇입니까?
mockito는 mock 객체의 메서드가 호출되고 mock 객체가 항상 sth를 가지고 있는지 여부를 확인하는 것 같습니다. doReturn (). when (mock 객체) ...
하지만 모의 객체를 만들고 doReturn (). when (mock 객체) ..를 정의한 다음 다른 객체의 메서드가 호출되는지 확인할 수 있습니까?
내가 원하는 것은 다음과 같습니다. mockEnvironment를 정의하고 무슨 일이 있어도 응답을 반환합니다. 하지만 다른 경우에 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(...);
}
이를 위해 Mockito Spy 를 사용할 수 있습니다 . anotherObj
스파이로 설정 하면 해당 개체에 대한 메서드 호출을 확인할 수 있습니다. 귀하의 예제에서 호출이 foo
일반적인 .NET 구현 대신 스파이 를 사용 하는지 확인해야합니다 anotherObj
. 스파이는 다음과 같이 설정됩니다.
AnotherClass anotherObjSpy = Mockito.spy(new AnotherClass());
// do stuff
verify(anotherObjSpy).codePath1(...);
참고 URL : https://stackoverflow.com/questions/31039283/how-to-verify-a-method-of-a-non-mock-object-is-called
반응형
'program tip' 카테고리의 다른 글
CloudFormation 템플릿을 빠르고 효과적으로 디버깅하려면 어떻게해야합니까? (0) | 2020.11.02 |
---|---|
tmux에서 분할 창 전환 : 명령 당 한 번 전환 (0) | 2020.11.02 |
jQuery로 객체 지향 클래스를 만드는 더 좋은 방법이 있습니까? (0) | 2020.11.02 |
사용자 CPU 시간 대 시스템 CPU 시간? (0) | 2020.11.02 |
git branch -d는 경고를 제공합니다. (0) | 2020.11.02 |