testing - 测试方法删除不起作用
问题描述
嗨我想测试服务方法删除但它不起作用:
这是我的服务方法:
public Optional<PersonDto> deletePerson(Long id) {
Assert.notNull(id, "id can't be null");
Optional<Person> personOptional = personRepository.findById(id);
personRepository.delete(personOptional.orElse(new Person()));
return personOptional.map(p -> modelMapper.map(p, PersonDto.class));
}
这是我对这种方法的测试:
@Test
public void shouldDeletePersonById() {
personService.deletePerson(1l);
Mockito.verify(personRepository, times(1)).deleteById(1l);
}
这是一个错误:
通缉但未调用:
personRepository.deleteById(1L);
-> at com.softwaremind.crew.people.service.PersonServiceTest.shouldDeletePersonById(PersonServiceTest.java:68)
但是,与此模拟恰好有 2 次交互:
personRepository.findById(1L);
-> at com.softwaremind.crew.people.service.PersonService.deletePerson(PersonService.java:69)
personRepository.delete(
Person{id=0, firstName='null', lastName='null', location='null', email='null', status='null', role='null', createdOn=null, modifiedOn=null}
);
-> at com.softwaremind.crew.people.service.PersonService.deletePerson(PersonService.java:70)
当然在服务工作中删除方法可以。
解决方案
推荐阅读
- ruby-on-rails - 带有数组的ruby数组如何在遍历每个数组并按数字搜索时获取数组编号
- javascript - 无法在我的快递应用中解决 CORS 政策
- sql - 数据库链接查询耗时过长
- c# - 在 iis 上放置站点 asp.net 框架时出错
- nginx - Kubernetes 入口配置未在 GKE 集群上更新?
- oracle - Windows 7 64 位上的 Oracle 18C X64
- javascript - 如何动态更改道具 - fullcalendar
- docker - Docker Compose 卷未安装
- java - 无法使用 Selenium Java 中的 sendKeys() 将文件上传到“浏览”按钮
- python - 如何区分布尔表达式和 z3 表达式?