1

J'ai écrit un contrat et le plugin a généré des tests autogénérés. Je vois un comportement très étrange avec ces tests autogénérés.Le point de terminaison du service avec la variable path provoque 404 avec le contrat cloud

Après est mon point de terminaison de service:

@RequestMapping(value="/check/{id}" method= RequestMethod.GET, produces = Media.APPLICATION_JSON_VALUE) 
public ResponseEntity<List<Application>> getApplications(
@PathVariable (value = "id") String id){ 

    return appService.findAll(id); 
} 

Et voici le contrat:

Contract.make { 
    request { 
     method GET() 
     url '/check/1234567' 
    } 
    response { 
     status 200 
     body(""" 
      { 
       ......... 
      } 
      """) 
     headers { 
      contentType(applicationJson()) 
     } 
    } 
} 

Comme je lance des tests "installer mvn clean" sont générés automatiquement et exécuter. Cela fonctionne bien avec le contrat ci-dessus et passe les tests parfaitement. Cependant, si je change les données dans le chemin vers "/ check/12345678", il commence à échouer. La chose que je ne suis pas en mesure de comprendre est que mon point de terminaison prend un chemin de type "id" qui est un type de chaîne. Pour ce type de chemin, toute valeur devrait être bonne. Cependant, les chemins suivants fonctionnent:

url '/check/1234567' 
    url '/check/12' 
    url '/check/12347' 

Et suivant ne fonctionne pas:

url '/check/12345678' //added just one more digit 
    url '/check/aa4567' //prepended characters 
    url '/check/123aa' //appended characters 

Il Si je peux obtenir une explication sur ce problème, ou comment le résoudre. Pratiquement n'importe quelle chaîne devrait fonctionner. Par exemple "/check/234df-dfs-fs234fds-sdf-fssd3rr"

Répondre

0

Vous pouvez essayer avec urlPattern au lieu d'URL, remplacez

url '/check/1234567' 

pour

urlPattern '/check/[0-9]+' 
+0

J'ai essayé modèle également, il donne le même résultat « attendu: <200> mais était: <404> '' url $ (consommateur ('/ check/^ [a-z0-9] + $'), producteur ('/ check/12345678')) ' – Yogi

+0

Vous avez corrigé. Il n'y avait rien de mal avec les modèles, il frappait les services et essayait de trouver des données basées sur les implémentations. En cas d'absence de données, la mise en œuvre était lancée 404. Elle travaillait pour certaines urls car les données étaient disponibles pour ces identifiants. Je l'ai réparé en me moquant des services. – Yogi