我试图利用最新的springcloudstream文档来实现一个基本的单元测试,使用推荐的基于jvmbroker的spring集成。
这是一个基于gradle的项目,因此我将maven依赖关系声明翻译为:
testImplementation 'org.springframework.cloud:spring-cloud-stream:3.0.7.RELEASE:test-binder'
处理器本身是直截了当的,获取原始对象并将其转换为规范化对象。虽然尚未实现正确的测试,但处理器的输出与预期一致:
@SpringBootApplication
public class SpringProcessorApplication {
public static void main(String[] args) {
SpringApplication.run(SpringProcessorApplication.class, args);
}
@Bean
public java.util.function.Function<KStream<String, RawLocationObservation>, KStream<String, NormalizedLocationObservation>> process() {
Logger logger = LoggerFactory.getLogger(SpringProcessorApplication.class);
return input -> input
.mapValues(value -> {
....
虽然我最终计划测试输出是否正确规范化,但在这个阶段,我只是试图Assert输出不是空的:
@SpringBootTest
class SpringProcessorApplicationTests {
@Test
public void sampleTest() {
try (ConfigurableApplicationContext context = new SpringApplicationBuilder(
TestChannelBinderConfiguration.getCompleteConfiguration(
SpringProcessorApplication.class))
.run("--spring.cloud.function.definition=process")) {
InputDestination source = context.getBean(InputDestination.class);
OutputDestination target = context.getBean(OutputDestination.class);
RawLocationObservation raw = new RawLocationObservation(...);
source.send(MessageBuilder.withPayload(raw).build());
assertNotNull(target.receive().getPayload());
}
}
测试运行,但似乎没有试图重载默认绑定器加载,因此测试在尝试连接到不存在的代理时超时localhost:9092 (或者在application.yml中配置的任何东西)。
我需要做什么来确保加载测试绑定器而不是默认绑定器?
暂无答案!
目前还没有任何答案,快来回答吧!