php小编新一将为您介绍如何为 integrationflows 创建功能测试。integrationflows是spring integration框架中的一个重要组件,用于定义和管理消息流转的逻辑。功能测试是保证integrationflows正确运行的关键环节之一。在本文中,我们将介绍为integrationflows创建功能测试的步骤和注意事项,以帮助开发人员更好地进行集成测试工作。
问题内容
我有一个 standardintegrationflow ,它每天运行并删除超过 10 天的文件。
@Bean public StandardIntegrationFlow oldReceiptsCleaner( @Qualifier("receiptSftpRemoteFileTemplate") RecursiveSftpRemoteFileTemplate receiptSftpRemoteFileTemplate, RemoteSftpFileRemover remoteSftpFileRemover) { return IntegrationFlows.from( Sftp.inboundStreamingAdapter(receiptSftpRemoteFileTemplate) .remoteDirectory(properties.getSftpPath()), e -> e.poller( Pollers.cron(properties.getCronExpression()) .maxMessagesPerPoll(-1)).id("oldReceiptsCleanerPoller")) .handle(remoteSftpFileRemover::removeFile) .get(); }
登录后复制
我想创建一个功能测试来验证它是否有效。我已经手动测试了代码,将 cron 表达式设置为每 2 分钟运行一次并删除早于 5 分钟的文件,但当然我需要一些自动化测试。
我曾想过创建 2 个文件,一个超过 10 天,另一个则不然。获取这两个文件并验证它们是否存在。然后使用 sourcepollingchanneladapter 的对象手动触发 standardintegrationflow 并调用 .start() 函数,然后尝试再次获取并验证是否已删除。
第一个问题是这是否是测试 integrationflow 的正确方法。另外,我找不到一种简单的方法来在测试中创建文件并更改其修改时间。
我正在使用 spring-integration 5.5.15 和 spock 框架进行测试。还使用 minio 容器在服务器上存储文件以进行功能测试
解决方法
您可以将 PollerSpec 作为 bean 并从 oldReceiptsCleaner 流定义中引用它。然后您在测试配置中覆盖该 bean。然后你就有了 LastModifiedFileListFilter ,它可以基于 age 的某些属性并在测试中指定所需的值。
我不熟悉Minio,但可能有API如何使用所需的lastModified创建文件。
那么是的。您可以将 @SpringIntegrationTest 与 noAutoStartup 一起使用作为 Sftp.inboundStreamingAdapter 的 bean 名称。创建文件后,您可以在测试方法中手动启动SourcePollingChannelAdapter。
以上就是如何为 IntegrationFlows 创建功能测试的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2622013.html