模拟聚合器的消息存储

时间:2014-09-01 17:47:57

标签: spring-integration

我们想模拟一些测试的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);
  ...
}

1 个答案:

答案 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);
    }

};
相关问题