简体   繁体   English

使用MockMvc测试异步控制器

[英]Testing async controllers using MockMvc

I have a controller that returns a DeferredResult, it is a POST. 我有一个返回DeferredResult的控制器,它是一个POST。

Controller: 控制器:

@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;
    }

I am trying to test it but receiving the following error: "java.lang.AssertionError: Content type not set" 我正在尝试对其进行测试,但收到以下错误:“ 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));

What can I do to solve? 我该怎么办?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM