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 建立功能測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!