私のユーザークラスは次のとおりです。
public class UserResource {
@Inject UserService userService;
public boolean createUser(User user) {
DbResponse res = userService.addUser(user);
if(res.isSuccess){
return true;
}else{
return false;
}
}
}
私のテストクラスは次のようになります、
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);
}
}
ご覧のとおり、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;
}
}
}
も模擬し、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);
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加