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

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 中完成。
添加回答
举报