0
を使用してファイルのダウンロードのREST APIをあざけるながら、私は406エラーMockMVC
return new ResponseEntity<>(new InputStreamResource(myInputStream),
responseHeaders, HttpStatus.OK);
RESTのAPIは次のように宣言されている返すSpringフレームワーク、使用してREST APIを実装しています:用のユニットテストを書いている間
@RequestMapping(value = "/download", method = RequestMethod.GET,
produces = { MediaType.APPLICATION_OCTET_STREAM_VALUE })
をこのAPIは、私は以下のようにMockMVCを使用しています:
final MappingJackson2HttpMessageConverter messageConverter =
new MappingJackson2HttpMessageConverter();
messageConverter.setObjectMapper(new ObjectMapper());
messageConverter.getObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
this.mockMvc =
MockMvcBuilders.standaloneSetup(myController)
.setMessageConverters(messageConverter)
.apply(new RestDocumentationConfigurer()
.withScheme("https").withHost("localhost")
.withPort(443)).build();
そして、私のテストケースは次のようになります。
mockMvc.perform(
org.springframework.test.web.servlet.request.MockMvcRequestBuilders
.get(restUri))
.andExpect(
org.springframework.test.web.servlet.result.MockMvcResultMatchers
.status().isOk())
.andDo(document("myApi")).andReturn();
しかし、私は私がここで行方不明ですどのようなエラー406
java.lang.AssertionError: Status expected:<200> but was:<406>
at org.springframework.test.util.AssertionErrors.fail
としてのステータスを取得していますか? ご協力いただければ幸いです。
はい、これも試しましたが、 'andExpect(content()。contentType(MediaType.APPLICATION_OCTET_STREAM_VALUE))' ですが、コンテンツタイプが設定されていないとしてエラーが発生します。 REST API応答ヘッダーにもコンテンツタイプを設定しようとしましたが、これも機能しませんでした。 – rmagarwal
それは私が言ったことではありません。あなたがやっていることは、レスポンスに対する期待を設定することです。 'MockHttpServletRequestBuilder'で' accept(MediaType.APPLICATION_OCTET_STREAM) 'を呼び出すことで、適切な受け入れヘッダが設定されるように、リクエストの前提条件を設定する必要があります。 – marthursson
はい、これも試しましたが、依然として406エラーが表示されます。 mockMvc.perform( \t \t \t \t get(restUri).accept(MediaType.APPLICATION_OCTET_STREAM_VALUE))andExpect(status()。isOk()) – rmagarwal