首頁  >  文章  >  如何為 IntegrationFlows 建立功能測試

如何為 IntegrationFlows 建立功能測試

WBOY
WBOY轉載
2024-02-08 21:11:03883瀏覽

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建立檔案。

那麼是的。您可以將 @SpringIntegrationTestnoAutoStartup 一起使用作為 Sftp.inboundStreamingAdapter 的 bean 名稱。建立檔案後,您可以在測試方法中手動啟動SourcePollingChannelAdapter

以上是如何為 IntegrationFlows 建立功能測試的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除