有多条消息时如何测试Spring Cloud Stream?
How to test Spring Cloud Stream when there are multiple messages?
我想用多条消息测试 Spring Cloud Stream Sink。假设我有一个这样的处理器 class:
@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()));
}
}
现在,我想测试一下。这是我的测试 class:
@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
。
我想用多条消息测试 Spring Cloud Stream Sink。假设我有一个这样的处理器 class:
@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()));
}
}
现在,我想测试一下。这是我的测试 class:
@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
。