Я сталкиваюсь с этим: «Вы не настроили экземпляр 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_shouldGetAilities (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 не запускается в сгенерированном тесте. В сообщении об исключении предлагается запустить его в тесте. Однако это сгенерированный тест (в «целевой» папке). Неважно, что я туда добавляю, он стирается после "mvn clean install".
Кто-нибудь сталкивался с этим? Мой контракт неправильный? Вот почему в сгенерированном тесте не сгенерировалась стартовая часть MockMVC?
Другая проблема заключается в том, что URL-адрес в контракте является простым получением. Он возвращает сообщение в формате Json. Но пока я просто хочу сделать это очень простым, проверяя только код состояния 200, не проверяя сообщение.
Еще одна особенность этого URL-адреса заключается в том, что я попробовал этот URL-адрес в почтальоне и получил ответ. Я предполагаю, что это должен быть URL-адрес, который я использую в своем контракте. Это предположение неверно? Нужно ли мне по-другому формировать этот URL в контракте?
Кроме того, в почтальоне, когда я запрашиваю "GET" с этим URL-адресом, у меня ничего нет в "теле". Вот почему я оставил "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)