spring-cloud-stream - 多条消息时如何测试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"
有效载荷?或者至少输出中有三条消息?
解决方案
一直打电话poll()
,直到你得到null
。