0
私はDeferredResultを返すコントローラを持っています。これはPOSTです。MockMvcを使った非同期コントローラのテスト
コントローラー:
@RequestMapping(value = "/{customerId}/cards", method = RequestMethod.POST)
@ResponseBody
public DeferredResult<CardSummaryQuery> createCard(
@PathVariable String customerId,
@RequestBody CustomerDto payload) {
DeferredResult<CardSummaryQuery> deferred = new DeferredResult<>();
Observable<CardSummaryQuery> observable =
cardService.registerCardObservable(customerId, payload);
observable.subscribe(deferred::setResult, deferred::setErrorResult);
return deferred;
}
私はそれをテストしようとしているが、以下のエラーが発生します:「にjava.lang.AssertionError:コンテンツタイプが設定されていません」
をMvcResult result = mockMvc
.perform(post("/customers/55e5d-4df4r-v4fgt/cards").content(payload)
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()).andExpect(request().asyncStarted())
.andExpect(request().asyncResult("Deferred result")).andReturn();
mockMvc.perform(asyncDispatch(result)).andExpect(jsonPath("$.success").value(true));
は私が解決するために何ができます?
コントローラコードも入れてください – pvpkiran