J'utilise Spring Cloud Contract pour créer des stubs pour un service REST afin que je puisse tester avec un client REST. J'ai le coureur stub travaillant dans une application de démarrage de printemps, et tout fonctionne comme prévu. Le problème que j'ai est que je voudrais voir des éléments des demandes dans les réponses, pour mieux simuler le comportement éventuel du service REST. Par exemple, dans ce contrat, je voudrais ce qui est passé dans le champ « code » dans la demande de comparution régurgité dans la réponse:Utilisation de Spring Cloud Contract Groovy DSL, comment puis-je paramétrer la réponse pour inclure des valeurs de la requête?
package contracts
org.springframework.cloud.contract.spec.Contract.make {
request {
method('POST')
url $("/resource")
body ([
code : $(client(regex('[a-zA-Z0-9]{5,32}')))
])
}
response {
status 200
body([
code: ???
])
}
}
Il est évident que l'entrée « code » peut être quelque chose qui correspond à la régulière expression, et donc la valeur réelle est inconnue jusqu'à l'exécution. Y a-t-il quelque chose que je puisse mettre à la place de "???" renvoyer le code soumis dans la demande? J'essayé d'accéder à, par exemple:
request.body.serverValue['code']
mais cette valeur, il semble est généré au moment de la compilation, peut-être pour permettre la génération automatique de tests dans ContractVerifierTest.java sous générés essais sources.
Est-ce que cela peut être fait? Est-ce une utilisation appropriée de Spring Cloud Contract?
J'ai mis à jour la réponse cause réellement à partir de 1.1.0 vous pouvez le faire. –
oh, excellent @ MarcinGrzejszczak, merci pour la mise à jour! – billshwah47