相关疑难解决方法(0)

一起测试Spring asyncResult()和jsonPath()

我正在使用一个安静的URL来启动长时间运行的后端进程(通常是在cron时间表上,但我们希望能够手动启动它).

下面的代码有效,我在手动测试时会在浏览器中看到结果.

@ResponseBody
@RequestMapping(value = "/trigger/{jobName}", method = RequestMethod.GET)
public Callable<TriggerResult> triggerJob(@PathVariable final String jobName) {

    return new Callable<TriggerResult>() {
        @Override
        public TriggerResult call() throws Exception {
            // Code goes here to locate relevant job and kick it off, waiting for result
            String message = <result from my job>;
            return new TriggerResult(SUCCESS, message);
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

当我在没有Callable使用下面的代码的情况下进行测试时,一切正常(我更改了预期的错误消息以简化发布).

mockMvc.perform(get("/trigger/job/xyz"))
    .andExpect(status().isOk())
    .andDo(print())
    .andExpect(jsonPath("status").value("SUCCESS"))
    .andExpect(jsonPath("message").value("A meaningful message appears"));
Run Code Online (Sandbox Code Playgroud)

当我添加它Callable但它不起作用.我也在下面试过,但它没有用.其他人有成功吗?

mockMvc.perform(get("/trigger/job/xyz"))
    .andExpect(status().isOk())
    .andDo(print())
    .andExpect(request().asyncResult(jsonPath("status").value("SUCCESS")))
    .andExpect(request().asyncResult(jsonPath("message").value("A meaningful message appears")));
Run Code Online (Sandbox Code Playgroud)

以下是我的print()中的相关部分.看起来mockMvc在这种情况下无法正确解开Json(即使它在我的浏览器中有效)?当我这样做而没有Callable …

json spring-mvc spring-test spring-test-mvc

12
推荐指数
3
解决办法
8015
查看次数

标签 统计

json ×1

spring-mvc ×1

spring-test ×1

spring-test-mvc ×1