如何使用 SwaggerValidator(com.atlassian.oai.validator) 来验证 Lagom API 响应?

How can I use SwaggerValidator(com.atlassian.oai.validator) to validate Lagom API Response?

嗯,我被困在这种情况下,我想使用 Swagger API 来验证我的 Lagom 服务 API 的响应。 这是一些示例代码:

@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();


}

当这段代码运行时它似乎进入了服务(因为它打印了一些服务日志。)但没有调用将给定值的数据库的方法。

我需要在这里做一些事情,它调用服务的方法并根据这个 swagger 规范验证响应。

我看到了这个 link 但没有得到解决方案 How to validate API in tests with Swagger?

如果您希望验证与您的 运行 服务的实际交互,我建议您使用 RestAssured 模块 (https://bitbucket.org/atlassian/swagger-request-validator/src/master/swagger-request-validator-restassured/)

这将允许您针对 运行 服务执行请求,然后验证 request/response 交互是否符合您的 swagger 规范。

示例模块中有一个使用它的示例 - https://bitbucket.org/atlassian/swagger-request-validator/src/master/swagger-request-validator-examples/src/test/java/com/atlassian/oai/validator/examples/restassured/SwaggerValidationFilterTestExample.java(请注意,那里的示例使用 WireMock 来存根一个真实的服务,但您可以将其替换为实际的 运行 服务).