多条消息时如何测试Spring云流汇?

问题描述 投票:0回答:1

我想测试Spring Cloud Stream Sink有多条消息的时候。比方说,我有一个这样的处理器类。

@Component
@EnableBinding(Processor.class)
public class TestProcessor {
    @Autowired
    private Processor processor;

    @StreamListener(Processor.INPUT)
    public void process(@Payload List<String> values) {
        values.forEach(s -> processor.output().send(MessageBuilder.withPayload(s).build()));
    }
}

现在,我想测试它。这是我的测试类。

@ExtendWith(SpringExtension.class)
@SpringBootTest
public class ProcessorTest {
    @Autowired
    private Processor processor;
    @Autowired
    private MessageCollector collector;

    @Test
    public void cdrFilterTriggerFlow_whenNoTrigger_shouldNoResponse() throws JsonProcessingException, InterruptedException {
        processor.input().send(MessageBuilder.withPayload(List.of("a", "b", "c")).build());
        Object payload = collector.forChannel(processor.output()).poll().getPayload();
        assertNotNull(payload);
    }
}

在有效载荷中,我只得到 "a". 我怎么能得到所有 "a", "b""c" 在有效载荷中?或者至少有三个消息在输出?

spring-cloud-stream spring-test
1个回答
1
投票

继续调用 poll() 直至 null.

© www.soinside.com 2019 - 2024. All rights reserved.