【发布时间】:2015-11-21 16:51:49
【问题描述】:
我正在尝试使用 TDD 技术实现我的 Spring 网站。
有一些 TDD 规则:
- 测试行为而不是状态。
- 测试不应依赖于 实施。
我创建了依赖于 crud UsersRepository 的 UsersService 空类。 现在,我正在尝试为注册新用户编写测试,但我不知道如何正确执行此操作。
@Test
public void signUp_shouldCheckIfUserExistsBeforeSign() throws ServiceException {
// given
User user = new User();
user.setEmail(EMAIL);
when(usersRepository.save(user)).thenReturn(user);
when(usersRepository.exists(anyString())).thenReturn(Boolean.FALSE);
// when
usersService.signUp(user);
// then
thrown.expect(UserAlreadyExistsServiceException.class);
usersService.signUp(user);
}
此代码测试行为,但也强制我使用 exists() 方法而不是 findByEmail() 来实现我的服务。
这个测试应该是什么样子?
【问题讨论】:
-
usersService 是否调用 findByEmail()?还是存在()?我不明白你的问题。
-
我不知道。我的服务尚未实施。但问题是如何编写好的测试。测试不应影响我的生产代码。
标签: spring junit mocking tdd mockito