java - 单元测试服务层上的 AssertionError(在 Java 中使用 Spring)
问题描述
尝试对我的服务层进行单元测试,这是我的测试代码:
@RunWith(MockitoJUnitRunner.class)
public class ServiceCreateUserTest {
@Mock
private UserRepository userRepository;
@InjectMocks
private UserCreateService userCreateService;
@Test
public void when_save_user_it_should_return_user() {
User user = new User();
user.setName("Test Name");
when(userRepository.save(ArgumentMatchers.any(User.class))).thenReturn(new User());
User created = userCreateService.create(user);
assertThat(created.getName()).isSameAs(user.getName());
}
}
这是我的服务代码:
@Service
public class UserCreateService {
@Autowired
UserRepository repository;
public User create(User user) {
return repository.save(user);
}
}
运行时出现以下错误:
java.lang.AssertionError:
期望:<"Test Name"> 和实际:
<null>
引用同一个对象
有人可以在这里阐明一下吗?不确定我的测试代码中缺少什么。也许与我的方法导入有关?
解决方案
您将在 userRepository.save() 调用中返回一个 new User() 。因此,当调用 userRepository.save() 时,它会返回一个新的用户对象。相反,返回给定的用户。
when(userRepository.save(ArgumentMatchers.any(User.class))).thenReturn(user);
推荐阅读
- python - 如何在 TensorFlow 2.0 中使用 Dataset.window() 方法创建的窗口?
- apache - 为 mvc 前端控制器设置 .htaccess
- sql - SQL 查询执行时间过长并在列中出现重复项
- python - Django2.1.7 项目 urls.py 无法正常工作(给出 404 错误)
- javascript - 与 $_POST[] 相比,PHP 随机数生成器不工作
- typescript - 使用Vue组件的mocha进行单元测试时基类中的方法不存在
- powershell - 导入多个 csv 文件并在每个 .csv 文件中写入字符串“End”
- python - Django-复数形式的无效标记:EXPRESSION
- c - 无法在 cygwin 中使用 SIGQUIT 杀死子进程
- java - Angular 2 Jquery Datatables.net 服务器端不工作