我的弹簧控制器测试没有进入控制器

问题描述 投票:1回答:1

我正在尝试使用mockMvc测试spring控制器。现有的功能是存在的,所以我在创建测试时参考了它,因为我是一个新的spring控制器。虽然现有的测试工作正常,但我的测试并没有进入我期望的spring控制器。这是我的测试。

@Test
    public void updatePriorityStudyDispatch() throws Exception {
        DispatchStudyPriorityRequest request = TestDataFactory.getDispatchStudyPriorityRequest();
        mockMvc.perform(post(BASE_URL, getDispatchId(WORKSTATION_ID_VALUE, STUDY_ID_VALUE))
            .accept(PowerShareMediaType.PSH_GATEWAY_STUDYDISPATCHER_JSON)
            .contentType(MediaType.APPLICATION_JSON)
            .content(gson.toJson(request)))
            .andExpect(status().isOk());
        verify(studyDispatcherService)
            .updatePriority(WORKSTAION_ID, STUDY_ID, TestDataFactory.getDispatchStudyPriorityRequest());
    }

这是我的控制器

@PostMapping(path = "/{dispatchid}", produces = PowerShareMediaType.PSH_GATEWAY_STUDYDISPATCHER_JSON)
    public ResponseEntity<Void> updatePriority(@PathVariable("dispatchid") String dispatchId,
        @Valid @RequestBody DispatchStudyPriorityRequest request) {
    ...
    ...
    ...
}

我的控制器上有一个断点 当我运行测试时,它似乎永远不会进入它。我的结果是400,当我期望200。我不确定发生了什么。

正在工作的基本上有不同的 "请求 "对象(不同的模型)。相同的BASE_URL,相同的ID_VALUEs,相同的MediaTypes。这里是控制器

@PutMapping(path = "/{dispatchid}", produces = PowerShareMediaType.PSH_GATEWAY_STUDYDISPATCHER_JSON)
    public ResponseEntity<Void> dispatchStudy(@PathVariable("dispatchid") String dispatchId,
        @Valid @RequestBody StudyDispatchRequest request) {

我认为这与RequestBody有关,但这是我第一次使用RequestBody来处理一些对象。我了解到有一个spring功能可以将传入的Json文件转换为对象,但我对这个概念很陌生,所以很难理解这个问题。但是,我对这个概念很陌生,所以很难理解这个问题。

spring unit-testing mockmvc
1个回答
0
投票

我发现了为什么会发生这种情况。因为DispatchStudyPriorityRequest对象中的Date()字段是Gson格式的,所以它给我400。不知何故,Json格式无法正确解析它。

Gson格式是类似 "Jun 12, 2020",而Json格式应该是 "yyyy-mm-dd"。

© www.soinside.com 2019 - 2024. All rights reserved.