我有一个给定的测试,我想在JUnit中运行。它依赖于代码使用JMS调用的复杂服务,因此在运行JUnit测试时,它将无法访问它。因此,考虑到我需要调用此服务这一事实,什么是存根此服务的最佳方法,以便在运行JUnit测试时调用时返回硬编码响应?
现在它使用JNDI来查找队列,现在使用easymock工作正常,因此spring初始化没有问题。但还现在需要从存根服务获得响应队列的响应(非常重要)。
答案 0 :(得分:1)
您是否考虑在单元测试中使用嵌入式ActiveMQ?
答案 1 :(得分:1)
如何将响应传递到回复队列?我假设通过在某处调用特定的回调方法来实现。谁可以访问该方法?
如果将回复队列传递给存根服务,您可以通过EasyMock捕获它,然后直接调用它上面的方法。在the EasyMock documentation(搜索“捕获”)中非常简要地讨论了这样做的方法。一个简单的例子:
Capture<Queue> replyQueueCapture = new Capture<Queue>();
...
MessageService stubService = createMock(MessageService.class);
stubService.sendMessage(capture(replyQueueCapture));
...
// run the test which indirectly invokes the stub service
...
Queue replyQueue = replyQueueCapture.getValue();
replyQueue.offer(replyMessage);