[英]How can we mock test IntegrationFlow in spring boot. I am using Spring Integration inside a Spring boot app using Spring Integration File
我有一项任务需要在 Spring Boot 应用程序中实现 IntegrationFlow,为此我创建了一个项目。 下面是3个班。
集成配置.java
@Configuration
public class IntegrationConfig {
@Autowired
private Transformer transformer;
@Bean
public IntegrationFlow integrationFlow() {
return IntegrationFlows.from(fileReader(),spec -> spec.poller(Pollers.fixedDelay(500)))
.transform(transformer,"transform")
.handle(fileWriter())
.get();
}
@Bean
public FileWritingMessageHandler fileWriter() {
FileWritingMessageHandler handler = new FileWritingMessageHandler(new File("destination"));
handler.setExpectReply(false);
return handler;
}
@Bean
public FileReadingMessageSource fileReader() {
FileReadingMessageSource source = new FileReadingMessageSource();
source.setDirectory(new File("source"));
return source;
}
}
变压器.java
@Component
public class Transformer {
public String transform(String filePath) throws IOException {
String content = new String (Files.readAllBytes(Paths.get(filePath)));
return "Transformed: " + content;
}
}
SpringIntegrationExample.java
@SpringBootApplication
public class SpringIntegrationExample {
public static void main(String[] args){
SpringApplication.run(SpringIntegrationExample.class,args);
}
}
现在有模拟测试的任务。
我是新手,不知道如何使用 JUnit 或 Mockito 或两者来测试。 我尝试使用带有 When().thenReturn() 的 JUnit,但无法在其中测试 IntegrationFlow。
谁可以帮我这个事 ? 提前致谢。
到目前为止,您的配置有几点注意事项:
FileReadingMessageSource
生成File
作为消息的有效负载。 FileWritingMessageHandler
可以处理File
有效负载。 因此,您不需要介于两者之间的transform()
。
虽然你只是没有展示整个流程......
流式 API 有 Java DSL 特定的工厂: org.springframework.integration.file.dsl.Files
。
目前尚不清楚您想模拟什么,但这里有一个关于使用 Spring Integration 进行测试的专用文档: https ://docs.spring.io/spring-integration/docs/current/reference/html/testing.html# 测试
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.