2017-05-15 14 views
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)); 

は私が解決するために何ができます?

+0

コントローラコードも入れてください – pvpkiran

答えて

関連する問題