【发布时间】:2021-08-05 04:50:34
【问题描述】:
我正在使用弹簧靴。我有下面的映射器类将实体对象映射到模型对象。
@Mapper(componentModel = "spring")
public interface PersonMapper {
PersonEntity personModelToPersonEntity(PersonModel pm)
PersonModel personEntityToPersonModel(PersonEntity pe)
}
服务类:
@Service
public class MyService{
@Autowired
PersonMapper personMapper;
@Autowired
PersonRepository personRepo;
@Transactional
public List<Person> getDetails() {
List<Person> personList = personRepo.findAll();
List<PersonModel> pm = personMapper.personEntityToPersonModel(personList);
...
...
}
}
我有下面的 Junit 测试用例,我在其中模拟数据。
@ExtendWith(MockitoExtension.class)
public class PersonTest{
@InjectMocks
PersonService personService;
// @Mock
// PersonMapper personMapper;
@Mock
PersonRepository personRepo;
@Test
void getPersonDetailsTest() {
given(personRepo.findAll()).willReturn(mymockData);
//given(personMapper.personEntityToPersonModel(..).willReturn(..);
...
}
}
如果我模拟 personMapper,一切都可以工作,但我不想在测试用例执行时模拟映射器类,因为我使用“given(personRepo.findAll()).willReturn(mymockData);”发送模拟实体数据,所以当它到达服务时它应该自动将发送的模拟数据转换为模型对象。就我而言,当我评论了模拟映射器类的代码时,它在映射器对象的服务类中抛出NullPointerException。
【问题讨论】:
-
因为那里什么都没有。你需要模拟它,或者手动注入它。
标签: spring-boot junit mockito