【问题标题】:Junit test method - cannot resolve symbol '.ok()'Junit 测试方法 - 无法解析符号 '.ok()'
【发布时间】:2018-06-13 09:29:44
【问题描述】:

您好,我想在我的 junit test 方法中使用方法 response 但我有一个错误: cannot resolve symbol 'response'

是什么原因,或者你知道我可以在这个地方替换的其他方法吗?

这是我的方法:

@PostMapping("/addPeopleToTeams/{teamId}/{personId}")
@ResponseBody
public ResponseEntity<?> addPeopleToTeam(@PathVariable Long teamId, @PathVariable Long personId) {
    TeamsAndPersonsId teamsAndPersonsId = new TeamsAndPersonsId(personId, teamId);
    teamService.findTeamById(teamsAndPersonsId.getTeamId());
    personService.findById(teamsAndPersonsId.getPersonId());
    teamService.addPersonsToTeams(personId, teamId);
    return ResponseEntity.ok(teamsAndPersonsId);

}

这是我的测试代码:

@Test
    public void shouldAddPersonToTeam() throws Exception {
        // Given
        TeamDto teamDto = prepareTeamDto();
        PersonDto personDto = preparePersonDto();
        // When
        when(teamService.createTeam(teamDto)).thenReturn(Response.ok().build());
        when(personService.addPerson(personDto)).thenReturn(Response.ok().build());
        // than
        mockMvc.perform(post("/addPeopleToTeams/{teamId}/{personId}", 1, 1))
                .andExpect(status().isOk());

    }

这个元素 (Reponse.ok().build());然后返回deos不起作用。

【问题讨论】:

  • doesn't work 是什么意思?
  • 方法响应是红色下划线,我不能;无法实现方法无法识别。这个方法应该是 coyote 实现的?当我添加 coyote 实现时 - ok() 无法识别
  • 也许您应该将其从 Reponse 更改为 Response?注意丢失的s
  • 抱歉有响应但在这种情况下无法识别元素 .ok()
  • 您对该Response 的导入声明是什么?你使用 IDE 吗?这应该很容易理解

标签: java rest junit


【解决方案1】:

我猜Response 的导入不正确。

另外说明,生产类使用ResponseEntity.ok(teamsAndPersonsId),但您的单元测试用例是模拟Response 类。确保您在单元测试用例中使用的是同一类的模拟对象。

请参考How to unit test a Spring MVC controller using @PathVariable? 进行样本测试。

【讨论】:

  • 我的测试类中有两个模拟:private TeamService teamService;私人人员服务人员服务;
猜你喜欢
  • 2020-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-20
  • 2021-03-26
  • 1970-01-01
  • 1970-01-01
  • 2015-09-07
相关资源
最近更新 更多