web-dev-qa-db-fra.com

Tests PACT vs Spring Cloud Contract

J'essaie de comprendre le meilleur outil entre PACT et Spring Cloud Contract pour mettre en œuvre des tests de contrat de pilote de consommateur. Je ne trouve pas d'exemples clairs pour trouver les avantages et les inconvénients.

Je veux implémenter CDCT et je n'utilise pas Spring dans mon projet. D'après ce que j'ai compris, je suppose que PACT est un bon choix.

Toute information ou suggestion est la bienvenue. Je vous remercie.

9
user3602058

Le contrat Spring Cloud vous permet de définir et de tester des contrats pour les deux REST et messagerie. Il fournit un DSL Groovy typé clair et facile à utiliser et permet également de définir des contrats via yaml. Les deux avec le DSL et avec yaml, la définition de contrats est très intuitive pour quiconque est familier avec les termes standard HTTP/messagerie, par exemple:

request {
    method PUT()
    url '/fraudcheck'
    body([
           "client.id": $(regex('[0-9]{10}')),
           loanAmount: 99999
    ])
    headers {
        contentType('application/json')
    }
}
response {
    status OK()
    body([
           fraudCheckStatus: "FRAUD",
           "rejection.reason": "Amount too high"
    ])
    headers {
        contentType applicationJson()
    }
}

Les tests côté producteur sont automatiquement générés par SCC et ajoutés au projet pendant la construction. Si une implémentation correcte respectant les contrats n'est pas en place, le projet ne sera pas construit et déployé. S'ils pass, les talons pour le consommateur seront générés et publiés avec la version d'artefact correspondante.

Côté consommateur, pour HTTP, SCC fournit le Stubrunner, qui lance une instance Wiremock (serveur http en mémoire), qui fournit des réponses tronquées aux demandes correspondantes. Stubrunner fonctionne avec des référentiels d'artefacts externes tels que comme Nexus et Artifactory et également avec des référentiels m2 locaux.

SCC s'intègre à SpringBoot de manière transparente et s'intègre également à Spring Cloud prêt à l'emploi et peut être utilisé à la place de la découverte de service lors des tests d'intégration.

Il s'intègre également prêt à l'emploi avec Pact et permet de tirer parti des fonctionnalités supplémentaires de Pact via des hooks tout en utilisant uniquement les définitions de contrats SCC).

SCC fournit également une option basée sur Docker pour implémenter et tester des contrats dans des technologies autres que JVM.

AVIS DE NON-RESPONSABILITÉ: je suis un contractant du contrat Spring Cloud.

16
OlgaMaciaszek