Я не могу издеваться над очередью jms TextMessage для тестирования. JMSException пробовал несколько способов, но, похоже, я этого не понимаю. любая помощь приветствуется.
Кажется, я не могу правильно издеваться и использовать объект Message.
Исходный код:
public class ConsumeService {
private DataProcessService dataProcessService;
@JmsListener
public void getMessage(final Message message) throws InterruptedException {
if (message instanceof TextMessage) {
TextMessage message = (TextMessage) message;
try {
dataProcessService.processRequestData(
message.getText(), prepareInfo(message));
} catch (JMSException e) {
log.error("JMSException in message");
} catch (ResourceAccessException e) {
log.error("IOException in message");
}
} else {
log.error("message convertion failed!");
}
}
}
Код модульного теста:
@InjectMocks ConsumeService consumeService;
@Mock DataProcessService dataProcessService;
@Test
public void testException() throws ResourceAccessException, JMSException{
TextMessage message = mock(TextMessage.class);
Mockito.lenient()
.when(
dataProcessService.processRequestData(
((TextMessage) message).getText(), prepareInfo((TextMessage) message)))
.thenThrow(JMSException.class);
assertThrows(
JMSException.class,
() -> this.consumeService.getMessage(message));
}
private Map<String, String> prepareInfo(TextMessage mqMessage) throws JMSException {
..
..
}
Ошибка:
org.mockito.exceptions.base.MockitoException:
Checked exception is invalid for this method!
prepareInfo
находится в тестовом классе, почему вы хотите издеваться над ним? - person George Lvov   schedule 24.07.2021