Im Folgenden finden Sie ein vollständiges Beispiel für eine Groovy-Vertragsdefinition: Beachten Sie, dass für den Vertrag, der das Namensfeld enthält, die generierte Testmethode validate_should_post_a_user. Für diejenige, die den Namen nicht hat, wird sie validate_withList_1 genannt. Es entspricht dem Namen der Datei WithList.groovy und dem Index des Vertrags in der Liste. Wie Sie sehen können, hat die erste Datei den Namensparameter aus dem Vertrag erhalten. Der zweite erhielt den Namen der Vertragsdatei (WithList.groovy) mit dem Index vorangestellt (in diesem Fall hatte der Vertrag einen Index von 1 in der Liste der Verträge in der Datei). Im vorherigen Beispiel hat ein Vertrag das Namensfeld und der andere nicht. Dies führt zur Generierung von zwei Tests, die mehr oder weniger wie folgt aussehen: Sie können einen Methodenaufruf definieren, der während des Tests auf der Serverseite ausgeführt wird. Eine solche Methode kann der Klasse hinzugefügt werden, die in der Konfiguration als “baseClassForTests” definiert ist. Der folgende Code zeigt ein Beispiel für den Vertragsteil des Testfalls: Es ist möglich, optionale Parameter in Ihrem Vertrag bereitzustellen. Optionale Parameter können Sie jedoch nur für Folgendes angeben: Ohne Jahresvertrag Internet-Pläne, sind Sie nicht in einem Ein- oder Zwei-Jahres-Vertrag gesperrt, so dass, wenn ein neuer Anbieter betritt den Bereich und bietet etwas, was Sie wollen, können Sie wechseln, ohne eine saftige Stornogebühr zu zahlen.

Keine jährlichen Vertragspläne verzichten auch auf Werbepreise, so dass es keine Preiserhöhung gibt, wenn eine Aktionsperiode endet. Über die Groovy DSL können Sie auf die org.springframework.cloud.contract.spec.internal.HttpStatus-Methoden verweisen, um einen aussagekräftigen Status anstelle einer Ziffer bereitzustellen. Sie können z.B. OK() für einen Status 200 oder BAD_REQUEST() für 400 anrufen. Sie müssen sicherstellen, dass der Name keine Zeichen enthält, die den generierten Test nicht kompilieren. Denken Sie auch daran, dass, wenn Sie denselben Namen für mehrere Verträge angeben, die automatisch generierten Tests nicht kompiliert werden können und die generierten Stubs sich gegenseitig überschreiben. Hier ist ein Beispiel für einen Groovy DSL-Vertrag mit XML-Antworttext: Spring Cloud Contract unterstützt das Definieren mehrerer Verträge in einer einzigen Datei. Die folgenden Methoden können im Abschluss einer Vertragsdefinition auf oberster Ebene aufgerufen werden.

Anfrage und Antwort sind obligatorisch. Priorität ist optional. Wenn test- oder stub-generierung stattfindet, wird der Inhalt der Datei an den Text einer Anforderung oder antwortung übergeben. Der Name der Datei muss eine Datei mit Speicherort relativ zu dem Ordner sein, in dem der Vertrag liegt. Wenn Sie asynchrone Kommunikation auf der Serverseite verwenden (Ihre Controller geben Aufrufbare, Verzögertes Ergebnis usw. zurück), müssen Sie innerhalb Ihres Vertrags eine async()-Methode im Antwortabschnitt bereitstellen. Der folgende Code zeigt ein Beispiel: Wenn Sie Ihren Vertrag mit einem höheren Prioritätswert abschließen möchten, müssen Sie eine niedrigere Zahl an das Prioritäts-Tag/die Prioritätsmethode übergeben. Z.B. hat die Priorität mit Wert 5 eine höhere Priorität als Priorität mit Wert 10. Denken Sie daran, dass Sie in der Groovy-Vertragsdatei den vollqualifizierten Namen für die Contract-Klasse angeben und statische Importe vornehmen müssen, z. B.

org.springframework.cloud.spec.Contract.make . Sie können auch einen Import für die Contract-Klasse bereitstellen: import org.springframework.cloud.spec.Contract und dann Contract.make aufrufen .