我们如何在 spring 启动时模拟测试 IntegrationFlow。我在使用 Spring 集成文件的 Spring 启动应用程序中使用 Spring 集成

How can we mock test IntegrationFlow in spring boot. I am using Spring Integration inside a Spring boot app using Spring Integration File

我有一项任务需要在 Spring 启动应用程序中实施 IntegrationFlow,为此我创建了一个项目。下面是 3 类.

IntegrationConfig.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;
}

}

Transformer.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()

虽然你只是展示了不是整个流程...

有 Java DSL-specific 流利工厂 API: org.springframework.integration.file.dsl.Files.

不清楚您想模拟什么,但这里有一份关于使用 Spring 集成进行测试的专用文档:https://docs.spring.io/spring-integration/docs/current/reference/html/testing.html#testing