Maison >Java >Comment créer des tests fonctionnels pour IntegrationFlows

Comment créer des tests fonctionnels pour IntegrationFlows

WBOY
WBOYavant
2024-02-08 21:11:03922parcourir

L'éditeur PHP Xinyi vous présentera comment créer des tests fonctionnels pour IntegrationFlows. IntegrationFlows est un composant important du framework Spring Integration, utilisé pour définir et gérer la logique du flux de messages. Les tests fonctionnels sont l'un des maillons clés pour garantir le bon fonctionnement d'IntegrationFlows. Dans cet article, nous présenterons les étapes et les considérations nécessaires à la création de tests fonctionnels pour IntegrationFlows afin d'aider les développeurs à mieux effectuer le travail de test d'intégration.

Contenu de la question

J'ai un standardintegrationflow qui s'exécute tous les jours et supprime les fichiers de plus de 10 jours.

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

Je souhaite créer un test fonctionnel pour vérifier que cela fonctionne. J'ai testé le code manuellement, en définissant l'expression cron pour qu'elle s'exécute toutes les 2 minutes et supprime les fichiers de plus de 5 minutes, mais bien sûr, j'ai besoin de tests automatisés.

J'ai pensé à créer 2 fichiers, l'un datant de plus de 10 jours et l'autre non. Obtenez les deux fichiers et vérifiez qu'ils existent. Utilisez ensuite l'objet de sourcepollingchanneladapter pour déclencher manuellement sourcepollingchanneladapter 的对象手动触发 standardintegrationflow 并调用 .start() et appeler la fonction .start(), puis essayez de l'obtenir à nouveau et vérifiez qu'il a été supprimé.

La première question est de savoir si c'est la bonne façon de tester le flux d'intégration. De plus, je ne trouve pas de moyen simple de créer un fichier et de modifier son heure de modification lors d'un test.

J'utilise spring-integration 5.5.15 et le framework spock pour les tests. Utilisez également un conteneur minio pour stocker des fichiers sur le serveur pour les tests fonctionnels

Workaround

Vous pouvez PollerSpec 作为 bean 并从 oldReceiptsCleaner 流定义中引用它。然后您在测试配置中覆盖该 bean。然后你就有了 LastModifiedFileListFilter ,它可以基于 age certaines propriétés et spécifier les valeurs requises dans le test.

Je ne connais pas Minio, mais il existe peut-être une API permettant de créer le fichier en utilisant le lastModified requis.

Alors oui. Vous pouvez ajouter @SpringIntegrationTestnoAutoStartup 一起使用作为 Sftp.inboundStreamingAdapter 的 bean 名称。创建文件后,您可以在测试方法中手动启动SourcePollingChannelAdapter.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer