跳到主要内容

JAX-RS

DeepSeek V3 中英对照 JAX-RS

Spring Cloud Contract 支持 JAX-RS 2 Client API。基类需要定义 protected WebTarget webTarget 并初始化服务器。测试 JAX-RS API 的唯一选项是启动一个 Web 服务器。此外,带有请求体的请求需要设置内容类型,否则将默认使用 application/octet-stream。

要使用 JAX-RS 模式,请使用以下设置:

testMode = 'JAXRSCLIENT'

以下示例展示了一个生成的测试 API:

import com.jayway.jsonpath.DocumentContext;
import com.jayway.jsonpath.JsonPath;
import org.junit.Test;
import org.junit.Rule;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.Response;

import static org.springframework.cloud.contract.verifier.assertion.SpringCloudContractAssertions.assertThat;
import static org.springframework.cloud.contract.verifier.util.ContractVerifierUtil.*;
import static com.toomuchcoding.jsonassert.JsonAssertion.assertThatJson;
import static javax.ws.rs.client.Entity.*;

public class FooTest {
WebTarget webTarget;

@Test
public void validate_() throws Exception {

// when:
Response response = webTarget
.path("/users")
.queryParam("limit", "10")
.queryParam("offset", "20")
.queryParam("filter", "email")
.queryParam("sort", "name")
.queryParam("search", "55")
.queryParam("age", "99")
.queryParam("name", "Denis.Stepanov")
.queryParam("email", "bob@email.com")
.request()
.build("GET")
.invoke();
String responseAsString = response.readEntity(String.class);

// then:
assertThat(response.getStatus()).isEqualTo(200);

// and:
DocumentContext parsedJson = JsonPath.parse(responseAsString);
assertThatJson(parsedJson).field("['property1']").isEqualTo("a");
}

}