我遇到了這個問題「您還沒有配置MockMVC實例。」 「mvn clean install」時出現異常。春天雲合同:生成的測試沒有配置MockMVC,編譯失敗
運行
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:
given()。 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實例沒有在生成的測試中啓動。異常消息中的建議是在測試中啓動它。但是,它是生成的測試(在「目標」文件夾下)。無論我在那裏添加什麼,它都會在「mvn clean install」後被清除。
有沒有人遇到過這個?我的合同是錯的嗎?這就是爲什麼它沒有得到生成的測試中生成的MockMVC開始部分?
另一個值得關注的是合同中的URL是一個簡單的get。它確實以Json格式返回消息。但現在,我只想通過僅驗證狀態碼200而不檢查消息來使其變得非常簡單。
關於這個URL的另一件事是,我試圖在郵遞員這個網址,並得到響應。我認爲這應該是我在合同中使用的網址。這個假設是錯誤的嗎?我需要以不同的方式在合同中形成此網址嗎?
另外,在郵遞員當我要求這個'GET'與這個URL,我沒有任何東西在「身體」。這就是爲什麼我將合同留在空(「」)的原因。這是正確的做法嗎?這可能會影響生成的測試嗎?
任何提示將不勝感激。
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)
「given()。mockMvc(..)。..」之後的stacktrace被插入到帖子的末尾。不知何故,我無法將它插入中間。 – Eric