2017-06-01 1 views
0

Nun, ich bin in diesem Szenario fest, dass ich Swagger API verwenden möchte, um die Antwort meiner Lagom Service API zu validieren. Hier ist ein Beispielcode: (., Da es einige Protokolle des Service druckt)Wie kann ich SwaggerValidator (com.atlassian.oai.validator) verwenden, um Lagom API Response zu validieren?

@Test 
public void shouldPayloadFromFileConformToSchema() throws Exception { 
    // first test the plain json is valid with schema 
    SwaggerRequestResponseValidator validator = SwaggerRequestResponseValidator 
     .createFor("my-service-schema.yaml").build(); 
    final Request validRequest = SimpleRequest.Builder.get("/myService/AL20170730/11111555556161/191919") 
     .withHeader("api-key", "TESTKEY") 
     .build(); 
    Response validResponse = SimpleResponse.Builder.ok() 
     .withBody(ValidatorTestUtil.loadResponse("my_service_sample_response_2017_03_16")).build(); 
    ValidationReport reportForText = validator.validate(validRequest, validResponse); 
    logger.info(
     "shouldPayloadFromFileConformToSchema() ################# VALIDATION PAYLOAD REPORT ##################"); 
    reportForText.getMessages().forEach((m) -> { 
     logger.info("{}", m); 
    }); 
    assertFalse(reportForText.hasErrors()); 
    logger.info(
     "shouldPayloadFromFileConformToSchema() ################# VALIDATION PAYLOAD REPORT END ##################"); 
    logger.info(validRequest.getHeaders().toString()); 
    SwaggerModule swagger = new SwaggerModule(); 


} 

Wenn dieser Code ausgeführt Es scheint, dass es in den Dienst geht aber nicht die Methode aufruft, die wird die Datenbank mit den angegebenen Werten .

Ich muss hier etwas tun, dass es die Methode des Dienstes aufruft und validiert die Antwort auf der Grundlage dieser Swagger-Spezifikation.

habe ich diesen Link, aber die Lösung nicht How to validate API in tests with Swagger?

Antwort

0

bekommen Wenn Sie suchen eine tatsächliche Interaktion gegen den laufenden Dienst bestätigen würde ich empfehlen, die RestAssured Modul (https://bitbucket.org/atlassian/swagger-request-validator/src/master/swagger-request-validator-restassured/)

Auf diese Weise können Sie eine Anforderung für den ausgeführten Dienst ausführen und anschließend überprüfen, ob die Anfrage/Antwort-Interaktion mit Ihrer prolong-Spezifikation übereinstimmt.

Es gibt ein Beispiel für seine Verwendung in der Beispiele Modul - https://bitbucket.org/atlassian/swagger-request-validator/src/master/swagger-request-validator-examples/src/test/java/com/atlassian/oai/validator/examples/restassured/SwaggerValidationFilterTestExample.java (Beachten Sie, dass das Beispiel dort WireMock verwendet, um einen echten Dienst auszugeben, aber Sie würden dies mit Ihrem tatsächlichen laufenden Dienst ersetzen).

Verwandte Themen