Heim > Java > Hauptteil

So erstellen Sie Funktionstests für IntegrationFlows

WBOY
Freigeben: 2024-02-08 21:11:03
nach vorne
890 Leute haben es durchsucht

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();
  }
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage