Heim >Java >So erstellen Sie Funktionstests für IntegrationFlows

So erstellen Sie Funktionstests für IntegrationFlows

WBOY
WBOYnach vorne
2024-02-08 21:11:03897Durchsuche

PHP-Editor Xinyi stellt Ihnen vor, wie Sie Funktionstests für IntegrationFlows erstellen. IntegrationFlows ist eine wichtige Komponente im Spring Integration Framework, die zum Definieren und Verwalten der Logik des Nachrichtenflusses verwendet wird. Funktionstests sind eine der wichtigsten Verbindungen, um den korrekten Betrieb von IntegrationFlows sicherzustellen. In diesem Artikel stellen wir die Schritte und Überlegungen zum Erstellen von Funktionstests für IntegrationFlows vor, um Entwicklern dabei zu helfen, Integrationstests besser durchzuführen.

Frageninhalt

Ich habe ein standardintegrationflow, das jeden Tag ausgeführt wird und Dateien löscht, die älter als 10 Tage sind.

@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();
  }

Ich möchte einen Funktionstest erstellen, um zu überprüfen, ob es funktioniert. Ich habe den Code manuell getestet und den Cron-Ausdruck so eingestellt, dass er alle 2 Minuten ausgeführt wird und Dateien löscht, die älter als 5 Minuten sind, aber ich brauche natürlich einige automatisierte Tests.

Ich habe darüber nachgedacht, zwei Dateien zu erstellen, eine davon ist älter als 10 Tage und die andere nicht. Holen Sie sich beide Dateien und überprüfen Sie, ob sie vorhanden sind. Verwenden Sie dann das Objekt von sourcepollingchanneladapter, um sourcepollingchanneladapter 的对象手动触发 standardintegrationflow 并调用 .start() manuell auszulösen und die Funktion .start() aufzurufen. Versuchen Sie dann erneut, es abzurufen, und überprüfen Sie, ob es gelöscht wurde.

Die erste Frage ist, ob dies der richtige Weg ist, Integrationflow zu testen. Außerdem finde ich keine einfache Möglichkeit, eine Datei zu erstellen und deren Änderungszeit in einem Test zu ändern.

Ich verwende Spring-Integration 5.5.15 und das Spock-Framework zum Testen. Verwenden Sie auch den Minio-Container, um Dateien für Funktionstests auf dem Server zu speichern

Problemumgehung

Sie können PollerSpec 作为 bean 并从 oldReceiptsCleaner 流定义中引用它。然后您在测试配置中覆盖该 bean。然后你就有了 LastModifiedFileListFilter ,它可以基于 age einige Eigenschaften und die erforderlichen Werte im Test angeben.

Ich kenne Minio nicht, aber es gibt möglicherweise eine API, wie man die Datei mit dem erforderlichen lastModified erstellt.

Dann ja. Sie können @SpringIntegrationTestnoAutoStartup 一起使用作为 Sftp.inboundStreamingAdapter 的 bean 名称。创建文件后,您可以在测试方法中手动启动SourcePollingChannelAdapter hinzufügen.

Das obige ist der detaillierte Inhalt vonSo erstellen Sie Funktionstests für IntegrationFlows. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen