“findById() 无法返回布尔值”错误

时间:2021-04-08 18:14:49

标签: java spring-boot mockito

我正在尝试为一个大学项目编写测试,但出现以下错误。

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,但为什么会影响我的方法的返回类型?

1 个答案:

答案 0 :(得分:1)

从错误信息来看,问题是由于 findById() 方法的模拟结果。它不在您发布的代码中,但大概是返回一个布尔值,而不是该方法的签名所要求的 Optional<Poll>

您应该返回一个 Optional.of(p1)

when(pollRepository.findById(anyInt())).thenReturn(Optional.of(p1));