[英]How to write integration tests for Rest Service API in spock
我有一个包含API方法的Java类
例如:
@GET
@Path("/{id}")
public Resposce getIds(@PathParam(name) String name) {
//some code here
}
我想对该API进行集成测试,即在测试时我想使用path
而不是方法名称来调用此方法
在其站点上查看Spring指南: 测试Web层
正如您明确要求的Spock:这是我对ApiSpec
标准实现:
@SpringBootTest(webEnvironment = RANDOM_PORT)
abstract class AbstractServiceSpec extends Specification {
protected final static RestTestClient api = new RestTestClient()
@Value('http://localhost:${local.server.port}')
String serviceUrl
def setup() {
api.baseUrl = serviceUrl
}
def "GET /health should return 200"() {
expect:
api.get("/health").code() == 200
}
}
注意, RestTestClient
是我自己的OkHttp包装器。 您当然可以使用任何HTTP客户端。
@SpringBootTest
批注使Spring启动整个服务。 在执行测试时,该服务已完全启动并正在运行,您可以对API进行黑盒测试。
通常, 对Web层进行测试是一本好书,正如您在示例中所看到的那样,大部分内容都可以在Spock和JUnit中完成。
这对我有用
import com.charter.aesd.testcommons.RESTSpecification
import groovyx.net.http.HttpResponseDecorator
class TestIT extends RESTSpecification{
def BASE_URL = "/test"
def "Get test"(){
when:
HttpResponseDecorator response = getRestClient().get([path:"$BASE_URL"+"/123"])
then:
response.status >=200 && response.status < 400
}
@Override
String getBaseUrl() {
return 'http://localhost:8889/'
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.