如何解决为什么模型映射器会更改对实体的引用 - 它似乎创建了一个新实体而不是更新现有实体;
我正在尝试测试我的某些方法的功能。它们确实可以正常工作,但是我在编写测试时遇到了麻烦。
这是我要测试的方法
@Override
public void update(Long id,TaskServiceModel taskServiceModel) {
DailyTask task = this.taskRepository.findById(id)
.orElseThrow(() -> new IllegalArgumentException((String.format("Task with id - %s does not exist",id))));
taskServiceModel.setId(id);
taskServiceModel.setUser(task.getUser());
task = this.modelMapper.map(taskServiceModel,DailyTask.class);
this.taskRepository.save(task);
}
And this is the test.
@Test
public void updateTaskWithIdWhenExistInDb() {
TaskServiceModel taskServiceModel = new TaskServiceModel();
taskServiceModel.setName("testing");
DailyTask task = new DailyTask();
task.setName("none");
Mockito.when(mockedTaskRepository.findById((long) 1)).thenReturn(Optional.of(task));
TaskService taskService = new TaskServiceImpl(mockedTaskRepository,modelMapper,mockedUserService);
taskService.update((long) 1,taskServiceModel);
Assert.assertEquals("testing",task.getName());
}
当我尝试调试时 - 它确实在将任务保存到存储库之前更改了任务的属性,但是当它到达这里时 - “ task = this.modelMapper.map(taskServiceModel,DailyTask.class);” 实体引用也会发生变化。并且测试失败,因为原始任务没有改变。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。