Основная служба: < /p>
Код: Выделить всё
@Service
@RequiredArgsConstructor
public class CalculationService {
private final RestClient restClient;
public CalculationResponse calculate(CalculationRequest request){
return restClient.post().uri("/service/calculate")
.body(request)
.retrieve()
.toEntity(CalculationResponse.class).getBody();
}
}
< /code>
Основной контроллер < /p>
@RestController
@RequestMapping("/service")
public class MockApi {
@PostMapping("/calculate")
public CalculationResponse calculate(@RequestBody CalculationRequest calculationRequest) {
CalculationResponse calculationResponse = new CalculationResponse();
calculationResponse.setSummary(calculationRequest.getName()+ "----" + calculationRequest.getValue());
return calculationResponse;
}
}
< /code>
Точка входа для моего интеграционного теста < /p>
@RestController
@RequestMapping
@RequiredArgsConstructor
public class TestController {
private final CalculationService calculationService;
@PostMapping("/integration")
public CalculationResponse integration(@RequestBody CalculationRequest request) {
return calculationService.calculate(request);
}
}
< /code>
restclient configuration < /p>
@Configuration
public class CalculationConfiguration {
@Bean
public RestClient restClient() {
return RestClient.builder()
.baseUrl("http://localhost:8080")
.build();
}
}
< /code>
Интеграционный тест < /p>
@AutoConfigureMockMvc
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ExtendWith(SpringExtension.class)
public class IntegrationTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private ObjectMapper objectMapper;
@Test
public void thatSummaryIsReturned() throws Exception {
CalculationRequest request = new CalculationRequest("Test", "Value");
mockMvc.perform(MockMvcRequestBuilders.post("/integration")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request)))
.andExpect(status().isOk())
.andReturn();
}
}
Отказ обработки запроса: org.springframework.web.client.resourceaccessexexception: ошибка ввода/вывода по почте запрос на "http: /// localhost: 8080/service/receculation": null
Не удалось: org.springframework.web.client.resourceaccessexception: ошибка ввода/вывода по почтовым запросу для «http: // localhost: 8080/service/saclulate»: null
at org.springframework.web.servlet.frameworkservlet.processrequest (frameworkservelcervelcervelcervlet.jerserflet.frameworkservlet.processrequest. org.springframework.web.servlet.frameworkservlet.dopost (frameworkservlet.java:914)
at jakarta.servlet.http.httpservlet.service (httpservlet.java:590)
atser org.springframework.web.servlet.frameworkservlet.service (frameworkservlet.java:885)
at org.springframework.test.web.servlet.testdispatcherservlet.service (testdispatcherservlet.java:72) ate jakarta.servlet.http.httpservlet.service (httpservlet.java:658) < /p>
Когда я меняю конечную точку в своем интеграционном тесте непосредственно, чтобы /служить /рассчитывать, что он работает. Есть ли у кого -нибудь идея, почему это так? Так кажется, что в моем тестовом контексте чего -то не хватает ...
Подробнее здесь: https://stackoverflow.com/questions/795 ... -is-called