정적 메서드 중 하나는 두 가지를 사용하고 있습니다. 그것은 일부 데이터를 리턴하지만 전달 된 인수 오브젝트를 수정합니다. 이 업데이트 된 인수 객체는 나중에 코드에서 사용됩니다.doAnswer for static methods - PowerMock
PowerMock을 사용하여 반환 동작을 조롱합니다.
입력 인수를 업데이트하는 두 번째 부분을 정의하려면 doAnswer 메소드를 정의하지만 작동하지 않습니다. 테스트하려는 메서드는 다음과 같습니다.
public void login() throws ConnectionException, AsyncApiException {
ConnectorConfig partnerConfig = new ConnectorConfig();
//This call sets the value in one member variable 'serviceEndPoint in ParterConfig which is accessed later in this method only.
partnerConnection = Connector.newConnection(partnerConfig);
//partnerConfig.getServiceEndpoint is called.
PowerMockito.mockStatic(Connector.class);
when(Connector.newConnection(Mockito.any(ConnectorConfig.class))).thenReturn(partnerConnection);
PowerMockito.doAnswer(new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) {
ConnectorConfig config = (ConnectorConfig) invocation.getArguments()[0];
config.setServiceEndpoint("service end point");
return null;
}
}).when(Connector.newConnection(Mockito.any(ConnectorConfig.class)));
}
그러나 '위의 스텁이 감지되지 않았습니다.'라는 오류가 발생합니다. Connector
은 타사 클래스이므로 해당 동작을 제어 할 수 없습니다.
어떤 제안이 잘못 될 수 있습니까?
doc 링크는 thnx입니다. 나는 그것을 내일 시도 할 것이다. – RandomQuestion
이것은 효과가 있습니다. 나는 버그를 신청했다. 제목은 가리 키지 않지만 편집 할 수는 없습니다. https://code.google.com/p/powermock/issues/detail?id=452&can=4&q=javadoc – RandomQuestion