2017-08-31 7 views
0

Avons-nous un moyen de tester le contrat de message d'entrée du côté du consommateur si le producteur modifie le corps du message d'entrée.test de contrat de nuage de printemps - validation de message d'entrée

Nous utilisons uniquement stubTrigger.trigger ("label"); à tester du côté des consommateurs, mais comment le consommateur sait-il que si le producteur modifie le contrat de message d'entrée? Le cas de test du consommateur semble passer toujours pour moi, même le producteur change le contrat d'entrée.

Répondre

0

Donc, je comprends que vous avez une situation synchrone où vous recevez un message, puis en envoyez un autre à une autre application? Ou est-ce l'inverse, que vous envoyez un message et que vous vous attendez à en recevoir un autre.

Vous avez 2 choix. La première consiste à lire la documentation et à utiliser cette approche (http://cloud.spring.io/spring-cloud-static/Dalston.SR3/#_scenario_2_output_triggered_by_input). Ici vous pouvez définir un contrat où un message d'entrée spécifique permettra de déclencher une sortie. SO dans votre cas si votre message de sortie est faux alors vous ne recevrez pas l'autre. L'autre approche est en fait de scinder cela en 2 contrats (https://github.com/spring-cloud/spring-cloud-contract/issues/321). Disons que votre application s'appelle A et l'autre s'appelle B. Le premier contrat sera A envoie un message à B (A est le producteur) et le second que B envoie un message à A (B est le producteur). Donc, dans le cas où A veut changer l'entrée pour envoyer le message à B, les tests du contrat échoueront.

+0

J'ai simple usecase. Disons que j'ai deux applications App A et App B App A demande les détails de l'employé en mettant "nom" employé dans la file d'attente de messagerie App B écoute de la file d'attente obtenir le "nom" de l'employé comme message d'entrée et répond avec le détails Maintenant, mon problème est si En tant que producteur, l'application B change le «nom» de l'employé en employé «Id» en entrée. Je m'attends à ce que l'application client A échoue car il n'y a pas de changement dans le code du consommateur et que ses photos envoient le "nom" comme entrée au lieu de "id". mais les cas de test passent avec les bouts nouvellement générés. S'il vous plaît, aidez-moi s'il vous manque quelque chose ici. –

+0

App A est le producteur du message à l'application B. Mais plus tard, vous écrivez que B est le producteur d'un message à A. Je suis confus –