Las*_*apa 2 java unit-testing mockito
我的用户类别如下
public class UserResource {
@Inject UserService userService;
public boolean createUser(User user) {
DbResponse res = userService.addUser(user);
if(res.isSuccess){
return true;
}else{
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的测试课如下
public class UserResourceTest {
UserResource userResource;
@BeforeMethod
void beforeMethod() {
userResource = new UserResource();
}
@Test
public void test() {
User user= mock(User.class);
boolean res= userResource.createUser(user);
assert(res);
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,应该将UserService对象注入UserResource类。如何在测试中将模拟的UserService对象注入到userResource对象?
仅供参考:
考虑通过构造函数注入使用显式依赖关系主体,因为它非常清楚地说明了类执行其特定功能所需的条件。
public class UserResource {
private UserService userService;
@Inject
public UserResource(UserService userService) {
this.userService = userService;
}
public boolean createUser(User user) {
DbResponse res = userService.addUser(user);
if(res.isSuccess){
return true;
}else{
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并模拟并将UserService其分配给被测对象。配置测试所需/模拟的行为。
public class UserResourceTest {
@Test
public void test() {
//Arrange
boolean expected = true;
DbResponse mockResponse = mock(DbResponse.class);
when(mockResponse.isSuccess).thenReturn(expected);
User user = mock(User.class);
UserService mockService = mock(UserService.class);
when(mockService.addUser(user)).thenReturn(mockResponse);
UserResource userResource = new UserResource(mockService);
//Act
boolean actual = userResource.createUser(user);
//Assert
assert(expected == actual);
}
}
Run Code Online (Sandbox Code Playgroud)