首页 > 解决方案 > 多条消息时如何测试Spring Cloud Stream?

问题描述

我想用多条消息测试 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-streamspring-test

解决方案


一直打电话poll(),直到你得到null


推荐阅读