java - 单元测试 JMS 有效负载
问题描述
我有一些如下所示的代码:
class MyClass {
private JmsTemplate messageSender;
public void doStuff(Domain object domainObject){
... //other stuff
updateClient(domainObject);
}
...
private void updateClient(DomainObject domainObject){
final String payload = buildMessageForObject(domainObject);
messageSender.send(new MessageCreator() {
public Message createMessage(Session sn) throws JMSException {
return sn.createTextMessage(payload);
}
});
}
}
我的 JMS 模板由 Spring 框架自动装配。for 的逻辑buildMessageForObject
实际上是内联的,但如果不是,它将是私有的。我想做的是对消息有效负载字符串进行断言。如果 Spring JMSTemplate API 有类似的东西会很好,jmsTemplate.sendTextMessage(String text)
这样我就可以jmsTemplate
在我的测试中对模拟对象进行验证,但是我和消息之间似乎有太多的间接层,而且我在JMSTemplate 或 MessageCreator 的 API 显然可以帮助我对其进行重组以使其可测试。我正在使用 JUnit 和 Mockito,但我不知道 Mockito 会允许我指定 created 的行为MessageCreator
。
提前感谢您的帮助。
解决方案
推荐阅读
- java - datastax cassandra java 驱动程序 PlainTextAuthProvider 示例
- ruby-on-rails - 无法自动加载常量 Chart,需要 chart.rb 来定义它
- java - 将eclipse与数据库连接
- python - 如何为列表中的每个元素添加转换因子?
- npm - npm 安装后 npm 安装
? - django - 如何正确地将参数传递给 Django 中的基于类的视图实例?
- java - 如何将 void 方法中的值转换为 toString 方法?
- android - android 5 lolipop 中的日期选择器对话框问题
- go - Golang 应用程序的类似 PM2 的流程管理解决方案?
- javascript - 几分钟后反应原生 vscode 扩展不起作用