我正在尝试为一个大学项目编写测试,但出现以下错误。
Boolean cannot be returned by findById()
findById() should return Optional
这是我的测试:
@Test
void getStatusTest1() {
p1.setActive(true);
when(pollService.getStatus(1L)).thenReturn(true);
assertTrue(pollService.getStatus(p1.getId()));
}
这是我正在测试的服务方法:
public boolean getStatus(long id) {
Poll poll = pollRepository
.findById(id).orElseThrow(() -> new IllegalStateException((
"Poll with id " + id + "does not exist"
)));
return poll.isActive();
}
现在你可以看到我正在测试的方法没有返回一个 Optional 而是一个布尔值,我不明白为什么会出现这个错误。 findById()
确实返回 Optional,但为什么会影响我的方法的返回类型?
答案 0 :(得分:1)
从错误信息来看,问题是由于 findById()
方法的模拟结果。它不在您发布的代码中,但大概是返回一个布尔值,而不是该方法的签名所要求的 Optional<Poll>
。
您应该返回一个 Optional.of(p1)
:
when(pollRepository.findById(anyInt())).thenReturn(Optional.of(p1));