使用订阅者 channel 测试 Spring-Integration

标签 testing groovy spring-integration publish-subscribe channel

我有以下内容:

Direct-Channel => Splitter => PublishSubscribeChannel

我想将数据发送到直接 channel 并在发布订阅 channel 中测试结果

我目前的部分内容取自 Spring.io (并且只有在我逐步通过 Debug模式时它才有效)是:

DirectChannel incomeChannel
PublishSubscribeChannel subscribeChannel

@Test
public void test() {
    final AtomicInteger count  = new AtomicInteger()

    assert true == subscribeChannel.subscribe(new MessageHandler() {
        void handleMessage(Message<?> message) throws MessagingException {
            count.getAndIncrement();
            Entity response = message.getPayload()
            assert response != null
            // assertions ...
        }
    })

    def request = MessageBuilder.withPayload(entities).build()
    assert incomeChannel.send(request) == true

    Thread.sleep(10000)
    assert 0 < count.get()
}

最佳答案

你没有显示你的配置,但是,如果你的发布子 channel 有一个任务执行器,你需要添加一个锁存器;你还应该在主线程上做断言......

@Test
public void test() {
    final AtomicReference<Message<?>> messageRef = new AtomicReference<>();
    final CountDownLatch latch = new CountDownLatch(1);

    assert true == subscriberChannel.subscribe(new MessageHandler() {
        void handleMessage(Message<?> message) throws MessagingException {
            messageRef.set(message);
            latch.countDown();
        }
    })

    def request = MessageBuilder.withPayload(entities).build()
    assert incomeChannel.send(request) == true
    assert true == latch.await(10, TimeUnit.SECONDS)
    Entity response = msg.get().getPayload()
    assert response != null
    // assertions ...

}

关于使用订阅者 channel 测试 Spring-Integration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48241036/

相关文章:

google-chrome - 在 Chrome 中禁用闪光灯

java - 正则表达式捕获组与在日期上使用拆分,哪个更好?

java - 在运行时构造@RabbitListener 的最简单方法

java - 使用 spring 集成 ftp 支持将文件从 ftp 服务器传输到另一个 ftp 服务器

quartz-scheduler - Spring Integration 2 与 Quartz 调度器

ruby-on-rails - 如何开始使用 Ruby on Rails 进行 TDD?

php - 测试参数是否存在于函数中

c# - 如何对 DataContractSerializer 进行单元测试?

string - Groovy 字符串评估运行时

java - Groovy 模板引擎和内存不足。可能存在内存泄漏吗?