2017-07-28 1 views
0

J'ai écrit un contrat de cloud printanier dans une application serveur exécutant un démarrage à ressort. Cette partie génère correctement les talons dans mon repo local. Maintenant, je veux vérifier ce contrat à partir d'une application client exécutant Spring 3.1 et Jersey.Méthode recommandée pour vérifier la partie client du contrat de cloud de printemps dans l'application Jersey

Pour contourner ce problème, j'évalué la possibilité de déballer manuellement le pot stub dans le fichier de mappage et de lancer la vérification à l'aide WireMockClassRule comme cela se fait dans this link

Y at-il un autre moyen facile de réutiliser le AutoConfigureStubRunner à faire travailler pour moi, et n'a toujours pas besoin d'ajouter une dépendance à Spring Boot?

EDIT: Je suis en mesure de télécharger et décompresser des pots de talons en utilisant le plugin maven dependency:unpack, puis à les exécuter en utilisant wiremock (semblable à ce qui se fait here). Le seul problème que je dois encore résoudre est comment choisir dynamiquement la dernière version de stub. En utilisant le plugin de dépendance maven, j'ai toujours besoin de fournir la version d'artefact.

+0

Si vous voulez exécuter la chose comme un processus séparé, vous pouvez utiliser le démarrage Stub Runner (https://cloud.spring.io/spring-cloud-contract/spring-cloud- contrat.html # _stub_runner_boot_application) et lui permettre de télécharger toutes les choses. Sinon, vous pouvez utiliser la règle JUnit (je ne l'ai pas encore vérifié avec Spring 3.1) - https://cloud.spring.io/spring-cloud-contract/spring-cloud-contract.html#_stub_runner_junit_rule. –

+0

Merci beaucoup Marcin. Je finis par utiliser l'approche de Jersey et j'ai utilisé la dépendance: décompresser avec LATEST en version pour toujours télécharger la dernière version de talon – jesantana

+0

Pouvez-vous décrire votre approche de manière plus approfondie comme une réponse à ce problème? De cette façon, ce sera profitable pour les autres. –

Répondre

0

Supposons que vous ayez besoin de consommer un pot de bout sur le client. Le talon entre autres choses a un json contenant les données que votre contrat fournit pour faire le test d'intégration. Ce json a un format utilisé par wiremock pour publier un point de terminaison similaire à notre backend réel. Ainsi, les étapes suivantes doivent être prises:

Téléchargez le pot de talon de la prise en pension à votre machine locale et le copier dans wiremock dossier interne

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-dependency-plugin</artifactId> 
<version>3.0.1</version> 
<executions> 
    <execution> 
    <phase>generate-test-resources</phase> 
    <goals> 
    <goal>unpack</goal> 
    </goals> 
    <configuration> 
    <artifactItems> 
    <artifactItem> 
     <groupId>com.yourbackend.contract</groupId> 
     <artifactId>contract-service</artifactId> 
     <version>LATEST</version> 
     <type>jar</type> 
     <classifier>stubs</classifier> 
    </artifactItem> 
    </artifactItems> 
    <overWriteReleases>true</overWriteReleases> 
    <overWriteSnapshots>true</overWriteSnapshots> 
    <excludeTransitive>true</excludeTransitive> 
    <includes>META-INF/**/mappings/**</includes> 
    <outputDirectory>${basedir}/target/mappings</outputDirectory> 
    </configuration> 
    </execution> 
</executions> 
</plugin> 

Notez ici que le dernier est défini comme la version de le talon pour s'assurer que toujours le dernier bouchon tronqué est récupéré.

Démarrer serveur wiremock localhost

<dependency> 
    <groupId>com.github.tomakehurst</groupId> 
    <artifactId>wiremock</artifactId> 
    <scope>test</scope> 
</dependency> 

puis dans le test

@ClassRule 
WireMockClassRule wireMockRule = new WireMockClassRule(port); 

Vous définissez, effectuez les appels http dans les tests