2 回答

TA貢獻1946條經(jīng)驗 獲得超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條經(jīng)驗 獲得超9個贊
正如您明確要求 Spock:這是我的標準實現(xiàn)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注解使得春季啟動的全程服務(wù)。在執(zhí)行測試時,服務(wù)已完全啟動并運行,您可以對 API 進行黑盒測試。
通常測試 Web 層是一個很好的讀物,其中大部分——正如你在示例中看到的——可以在 Spock 和 JUnit 中完成。
添加回答
舉報