Я пытаюсь написать модульный тест, который выдает исключение на RetryTemplate, который я смоделировал. Текущий тест не проходит по моему утверждению.
/**
* Test maybeSendNotification() IOException.
*/
@Test(expected = RuntimeException.class)
public void testMaybeSendNotificationIOException() throws IOException
{
Instance instance = new Instance();
instance.setState(new InstanceState().withName("DOWN"));
instance.setKeyName("prod");
EasyMock.expect(slackMessageSender.send(EasyMock.isA(HashMap.class))).andThrow(new RuntimeException());
EasyMock.replay(slackMessageSender);
assertFalse(instanceService.maybeSendNotification(instance));
EasyMock.verify(slackMessageSender);
}
slackMessageSender
и retryTemplate
оба являются ложными.
Это тестируемый метод:
boolean maybeSendNotification(Instance newInstance)
{
Map<String, String> context = new HashMap<String, String>();
context.put("message", format("Instance with ID '%s' for load balancer '%s' status is DOWN.",
newInstance.getInstanceId(),
newInstance.getKeyName()));
try
{
retryTemplate.execute( c -> slackMessageSender.send(context));
LOG.debug(String.format("Successfully sent Slack notification for instance '%s'.", newInstance.getInstanceId()));
return true;
}
catch(IOException e)
{
LOG.debug(String.format("Failed to send Slack notification for instance '%s'.", newInstance.getInstanceId()));
return false;
}
В настоящее время метод возвращает true
, но я бы хотел, чтобы он выдавал IOException и возвращал false. Как мне издеваться над этим поведением?