Один из статических методов, которые я использую, выполняет две вещи. Он возвращает некоторые данные, но также изменяет передаваемый ему объект аргумента. Этот обновленный объект аргумента затем используется позже в коде.doAnswer для статических методов - 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
является сторонним классом, поэтому я не контролирую его поведение.
Любые предложения, что может быть не так?
thnx для ссылки на документ. Я дам ему попробовать завтра. – RandomQuestion
Это сработало. Я подал ошибку. Тема не должна указывать, но я не могу ее отредактировать. https://code.google.com/p/powermock/issues/detail?id=452&can=4&q=javadoc – RandomQuestion