繁体   English   中英

如何在Spock中编写Rest Service API的集成测试

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM