我遇到了这个“你还没有配置 MockMVC 实例”。“mvn clean install”时出现异常。
跑步
org.springframework.cloud.contract.verifier.tests.ContractVerifierTest 测试运行:1,失败:0,错误:1,跳过:0,经过时间:0.185 秒 <<< 失败!- 在 org.springframework.cloud.contract.verifier.tests.ContractVerifierTest validate_shouldGetAmenities(org.springframework.cloud.contract.verifier.tests.ContractVerifierTest) 经过时间:0.184 秒 <<< 错误!java.lang.IllegalStateException:您尚未配置 MockMVC 实例。你可以静态地做到这一点
或使用 DSL:
给定()。模拟MVC(..)。..
问题是,抛出此异常的测试是基于合约生成的测试。
这是合同。
package contracts
org.springframework.cloud.contract.spec.Contract.make {
request {
method 'GET'
url '/abc/def/serviceA?catalog=x'
body("")
}
response {
status 200
body(""
)
headers {
contentType(applicationJsonUtf8())
}
}
}
这是生成的测试。
package org.springframework.cloud.contract.verifier.tests;
public class ContractVerifierTest {
@Test
public void validate_shouldGetMyStuff() throws Exception {
// given:
MockMvcRequestSpecification request = given()
.body("\"\"");
// when:
ResponseOptions response = given().spec(request)
.get("/abc/def/serviceA?catalog=x");
// then:
assertThat(response.statusCode()).isEqualTo(200);
assertThat(response.header("Content-Type")).matches("application/json;charset=UTF-8.*");
// and:
String responseBody = response.getBody().asString();
assertThat(responseBody).isEqualTo("");
}
}
显然,MockMVC 实例并没有在生成的测试中启动。异常消息中的建议是在测试中启动它。但是,它是一个生成的测试(在“目标”文件夹下)。我在那里添加什么都没关系,在“mvn clean install”之后它会被清除。
有没有人遇到过这个?我的合同错了吗?这就是为什么它没有在生成的测试中生成 MockMVC 开始部分?
另一个问题是合约中的 URL 是一个简单的获取。它确实返回 Json 格式的消息。但是现在,我只想通过仅验证状态码 200 而不检查消息来使其非常简单。
关于这个 URL 的另一件事是我在邮递员中尝试了这个 url 并得到了响应。我认为这应该是我在合同中使用的网址。这个假设是错误的吗?我需要以不同的方式在合同中形成这个网址吗?
另外,在邮递员中,当我使用此网址请求此“GET”时,“正文”中没有任何内容。这就是为什么我将合同中的“body”保留为空(“”)。这是正确的做法吗?这会影响生成的测试吗?
任何提示将不胜感激。
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.performRequest(MockMvcRequestSenderImpl.java:101)
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.sendRequest(MockMvcRequestSenderImpl.java:296)
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.get(MockMvcRequestSenderImpl.java:367)
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSenderImpl.get(MockMvcRequestSenderImpl.java:47)
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSpecificationImpl.get(MockMvcRequestSpecificationImpl.java:565)
at com.jayway.restassured.module.mockmvc.internal.MockMvcRequestSpecificationImpl.get(MockMvcRequestSpecificationImpl.java:42)
at
org.springframework.cloud.contract.verifier.tests.ContractVerifierTest.validate_shouldGetAmenities(ContractVerifierTest.java:23)