为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 spock 中为 Rest Service API 编写集成测试

如何在 spock 中为 Rest Service API 编写集成测试

qq_笑_17 2021-09-26 14:24:04
我有一个包含 API 方法的 Java 类前任:@GET@Path("/{id}")public Resposce getIds(@PathParam(name) String name) {     //some code here }我想对此 API 进行正确的集成测试,即在测试时我想使用path但不使用方法名称调用此方法
查看完整描述

2 回答

?
智慧大石

TA贡献1946条经验 获得超3个赞

这对我有用


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/'

    }

}


查看完整回答
反对 回复 2021-09-26
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

正如您明确要求 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注解使得春季启动的全程服务。在执行测试时,服务已完全启动并运行,您可以对 API 进行黑盒测试。


通常测试 Web 层是一个很好的读物,其中大部分——正如你在示例中看到的——可以在 Spock 和 JUnit 中完成。


查看完整回答
反对 回复 2021-09-26
  • 2 回答
  • 0 关注
  • 242 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号