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?