我们想模拟一些测试的Aggregators消息存储,但是我们找不到如何将它注入JUnit测试。我们尝试使用AggregatingMessageHandler但没有成功。有办法吗?
提前致谢
此致
Guzman的
编辑:
@Autowire
private MessageHandler aggregator;
@Test
public test(){
SimpleMessageStore store = new SimpleMessageStore(50) {
@Override
public MessageGroup addMessageToGroup(Object groupId, Message<?> message) {
if (simulateConnectionException) {
throw new SomeException("Foo");
}
return super.addMessageToGroup(groupId, message);
}
aggregator.setMessageStore(store);
...
}
答案 0 :(得分:1)
你为什么要嘲笑它? SimpleMessageStore
是一个基本的内存中实现,您可以根据需要操作测试用例。
也就是说,你应该没有问题模拟MessageGroupStore
并将其提供给聚合器(通过XML命名空间,或直接)。
但是,您必须检查聚合器(和AbstractCorrelatingMessageHandler
)以确切地确定要模拟的方法以及何时调用它们。
因此我的声明更容易使用注入SimpleMessageStore
;这就是大多数框架测试的作用 - 参见AggregatorTests
。
编辑:
(见评论)。
我建议你做这样的事情......
private final SimpleMessageStore store = new SimpleMessageStore(50) {
@Override
public MessageGroup addMessageToGroup(Object groupId, Message<?> message) {
if (simulateConnectionException) {
throw new SomeException("Foo");
}
return super.addMessageToGroup(groupId, message);
}
};