首页 > 解决方案 > 测试方法删除不起作用

问题描述

嗨我想测试服务方法删除但它不起作用:

这是我的服务方法:

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)

当然在服务工作中删除方法可以。

标签: testingmockingdelete-operator

解决方案


推荐阅读