好吧,我陷入了这种情况下,我想使用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 Spec验证响应。
我看到了此链接,但没有得到解决方案如何用Swagger验证测试中的API?
如果您想验证实际的交互对运行服务的实际交互SRC/Master/Swagger-Request-validator-restassured/(
这将使您可以针对运行服务执行请求,然后验证请求/响应互动与您的Swagger规范匹配。
在示例中有一个用途的示例模块-https://bitbucket.org/atlassian/swagger-request-request-validator/src/src/master/master/swagger-request-request-validator-examples-examples/src/src/test/java/java/comcom/atlassian/oai/validator/示例/重新安装/swaggerValidationFilterTestexample.java(请注意,那里的示例使用WireMock固定真实的服务,但是您可以用实际的运行服务来代替。