我无法模拟 jms queue 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!