模拟删除方法



我想通过验证实现删除方法并对其进行测试:

    @Override
    public boolean delete(Long id) {
        final Entity byId = repository.findById(id);
        if (byId != null) {
            repository.delete(byId);
        }
        final Entity removed = repository.findById(id);
        if (removed != null) {
            return false;
        }
        return true;
    }
    @Test
    public void deleteTest() throws Exception {
        // given
        final Entity entity = new Entity(1L);
        Mockito.when(repository.findById(1L))
                .thenReturn(entity);
        // when
        final boolean result = service.delete(1L);
        // then
        Mockito.verify(repository, times(1))
                .delete(entity);
        assertThat(result, equalTo(true));
    }

但是现在 Mockito 正在嘲笑服务中"删除"的对象,方法返回 false。如何测试?

正如我从您的代码中看到的那样,您repository.findById调用该方法两次。但是你不是在测试中嘲笑这种行为。您需要使用两次thenReturn,第一次使用entity,然后使用null

Mockito.when(repository.findById(1L)).thenReturn(entity).the‌​nReturn(null)

对于您现有的代码,当您执行 final Entity removed = repository.findById(id); 时,remove 将获得带有 entity 而不是 null 的赋值。

相关内容

  • 没有找到相关文章

最新更新