Я пытаюсь использовать Mockito в Spring Boot для написания модульного теста, который «имитирует» вызов моего экземпляра ElasticSearch. Теперь, поскольку в модульном тестировании вы не должны беспокоить внешние ресурсы, и, таким образом, с помощью Mockito, мой экземпляр ElasticSearch остановлен. Проблема в том, что мой UnitTest продолжает пытаться подключиться к моему экземпляру ElasticSearch, поэтому происходит сбой с сообщением «Соединение отказано». Вот мой тест:
import com.google.common.net.HttpHeaders;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.util.Base64Utils;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class ElasticSearchConnectionTest {
@Autowired
private MockMvc mvc;
@Value("${elasticsearch.user}")
private String user;
@Value("${elasticsearch.password}")
private String password;
private String myjson = "{ \"order\": \n" + "{ \n" + "\"id\":\"dbId\",\n" + "\"status\":\"completed\",\n" + "} \n" + "}";
@Test
public void contextLoads() throws Exception {
this.mvc.perform(post("/order")
.contentType(MediaType.APPLICATION_JSON)
.content(myjson)
.header(HttpHeaders.AUTHORIZATION, "Basic " +Base64Utils.encodeToString((user+":"+password).getBytes())))
.andExpect(status().is2xxSuccessful());
}
}
Сообщение об ошибке гласит: java.net.ConnectException: Connection refused
Я использую Java Low Level Rest Client для звонков на ElasticSearch