mockMvc 为 ResponseEntity<Boolean> 返回 500 而不是 200

时间:2021-02-03 01:05:59

标签: java rest mockmvc

我为 GET 方法创建了控制器测试。方法应返回 ResponseEntity<Boolean>。这是我的休息控制器:

@GetMapping(path = "/{email}/", produces = MediaType.TEXT_PLAIN)
    public ResponseEntity<Boolean> isEmailBlacklisted(@PathVariable("email") String email) {
        Boolean emailBlacklisted = emailBlacklistService.isBlacklisted(email);
        return new ResponseEntity<>(emailBlacklisted, HttpStatus.OK);
    }

这是我的测试:

@Test
    public void getEmailStatusSuccess() throws Exception {
        String validEmail = "validEmail@test.com";
        when(emailBlacklistService.isBlacklisted(any(String.class))).thenReturn(false);
        mockMvc.perform(get("/email/blacklist/{email}/", validEmail)
            .headers(HTTP_HEADERS))
            .andExpect(status().isOk())
            .andReturn();
        verify(emailBlacklistService).isBlacklisted(any(String.class));
    }

我期待 200 状态。我调试了它,看到 new ResponseEntity<>(emailBlacklisted, HttpStatus.OK); 是 `{ResponseEntity@4708} "<200 OK OK, false, []>"。但是,我收到了这个:

20:04:34.297 [main] DEBUG org.springframework.test.web.servlet.TestDispatcherServlet - Completed 500 INTERNAL_SERVER_ERROR

我花了几个小时来理解为什么它返回 500。对于其他组件,对象的响应完美地工作。我想知道这是否是 Boolean 类型的问题。任何帮助将不胜感激。

编辑:我发现将 MediaType.TEXT_PLAIN 更改为 MediaType.APPLICATION_JSON 可以解决此问题。我仍然不确定为什么以及如何保留 MediaType.TEXT_PLAIN

0 个答案:

没有答案
相关问题