我遇到了这个"你还没有配置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:
给出()。 mockMvc(..)。 ..
问题是,抛出此异常的测试是基于合同生成的测试。
这是合同。
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实例未在生成的测试中启动。异常消息中的建议是在测试中启动它。但是,它是一个生成的测试(在" target"文件夹下)。我在那里添加的内容并不重要,它会在" mvn clean install"之后被删除。
有没有人碰到这个?我的合同错了吗?这就是为什么它没有在生成的测试中生成MockMVC启动部分?
另一个问题是合同中的URL是一个简单的获取。它确实以Json格式返回消息。但就目前而言,我只想通过仅在不检查消息的情况下验证状态代码200来使其变得非常简单。
关于这个URL的另一件事是我在postman中尝试了这个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)
答案 0 :(得分:4)
事实证明,我需要在示例中添加我缺少的基类(如FraudBase.java)。那是MockMvc实例化的地方。