好吧,我陷入了这种情况,我想使用Swagger API来验证我的Lagom Service 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规范验证响应。
我看到了这个链接,但没有得到解决方案How to validate API in tests with Swagger?
答案 0 :(得分:0)
如果您希望验证针对正在运行的服务的实际互动,我建议您使用RestAssured模块(https://bitbucket.org/atlassian/swagger-request-validator/src/master/swagger-request-validator-restassured/)
这将允许您针对正在运行的服务执行请求,然后验证请求/响应交互是否符合您的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来存根实际服务,但您可以将其替换为实际运行的服务)。