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.
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
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 @SpringIntegrationTest
与 noAutoStartup
一起使用作为 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!