我想测试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
.