我使用Mockito创建模拟消息对象(以便测试ibmMqService
),但jmsTemplate
返回null
public class ImqMqServerTest {
@InjectMocks
IbmMqService ibmMqService;
@Mock
JmsTemplate jmsTemplate;
@Value("${ibm.mq.queue.response}")
String responseMq;
void receiveOrderResponseTest() throws JMSException {
jmsTemplate.send(responseMq, new MessageCreator() {
@Override
public Message createMessage(Session session) throws JMSException {
BytesMessage bytesMessage = session.createBytesMessage();
String msg = "Test";
bytesMessage.writeBytes(msg.getBytes());
return bytesMessage;
}
});
Message message = jmsTemplate.receive(responseMq);
System.out.println(message.getJMSMessageID());
}
}
正如Gary所说,我们需要存根session
createBytesMessage()
方法。
您可以使用匿名类来初始化BytesMessage
接口。
当调用session
mockcreateBytesMessage()
方法时,可以给出ByteMessage
接口的初始化,如下所示。
@ExtendsWith(MockitoExtension.class)
class Test {
@Mock
JmsSession session
@Test
void test() {
BytesMessage message = new BytesMessage() {
// implementation
};
doReturn(message).when(session).createBytesMessage();
// Your Test
}
}
File似乎没有在任何地方被声明为Springbean。在其上添加@Service
注释。和
@Autowired JmsTemplate jmsTemplate