Я пишу функциональные тесты для моего Spring Boot 2 приложения.
Я использовал TestRestTemplate
для функционального тестирования. Это работало нормально для GET API. Но теперь для тестирования POST API возвращается 415 Unsupported Media Type . Я передаю заголовки Content-Type и Accept со значением application/json
.
Это происходит только при запуске теста на IntelliJ 19 . Он работает нормально по командной строке. Я использую Gradle инструмент для сборки.
@RestController
@RequestMapping("Path/rest")
public class Controller {
@PostMapping(value = "/api", produces = "application/json", consumes = "application/json")
public ResponseEntity<Response> getResponse(
@RequestBody Request request,
@RequestHeader(name = "Transaction-GUID", required = false) String transactionGUIDheader, HttpServletRequest request)
throws InvalidInputException, ExternalServiceGenericException {
Response response = service.getResponse(request, transactionGUID);
return new ResponseEntity<>(response, HttpStatus.OK);
}
Функциональный тест:
@ActiveProfiles(FUNCTIONAL_TEST)
@SpringBootTest (webEnvironmentSpringBootTest.WebEnvironment.DEFINED_PORT)
@ExtendWith({SpringExtension.class})
@AutoConfigureWireMock(port = 9000)
public class ControllerFunctionalTest {
@Autowired
private ObjectMapper objectMapper;
@Autowired
protected TestRestTemplate testRestTemplate;
@BeforeEach
public void setup() {
WireMock.reset();
}
@Test
public void testControllerPost(){
HttpEntity<Reqeust> request = createRq(String str1, String str2);
callWiremock();
String url = "http://localhost:8080/Path/rest/api";
ResponseEntity<Response> response =
testRestTemplate.postForObject(url, request, Response.class);
assertNotNull(response);
}