gpt4 book ai didi

java - 模拟删除方法

转载 作者:行者123 更新时间:2023-12-02 20:45:39 25 4
gpt4 key购买 nike

我想实现带有验证的删除方法并测试它:

    @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两次。但你并没有在测试中 mock 这种行为。您需要使用 thenReturn 两次,第一次使用 entity,然后使用 null

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

使用现有代码,当您执行final Entity returned =repository.findById(id);时,remove将被分配entity 并且不为空。

关于java - 模拟删除方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44540310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com