繁体   English   中英

我们如何在 Spring Boot 中模拟测试 IntegrationFlow。 我在使用 Spring Integration File 的 Spring Boot 应用程序中使用 Spring Integration

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM