Vah*_*ini 5 testing mocking mockito vert.x
我有这个数据访问接口:
public interface UserDao {
void loadUsers(Handler<AsyncResult<List<User>>> handler);
}
Run Code Online (Sandbox Code Playgroud)
它用于这样的服务:
public class UserService {
private UserDao userDao;
public UserService(UserDao UserDao) {
this.userDao = userDao;
}
public void getUsers(Future<List<User>> future) {
userDao.loadUsers( ar ->{
if (ar.succeeded()){
List<User> users = ar.result();
// process users
future.complete(users);
}else {
// handle the error
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的目的是对我的服务进行单元测试并模拟数据访问层。每次调用 UserDao 类的 getUsers 方法时,我都想返回一组固定的结果。
@Test
public void testGetUsers(TestContext context) {
Async async = context.async();
UserDao mockUserDao = Mockito.mock(UserDao.class);
UserService userService = new UserService(mockUserDao);
List<User> mockResult = Arrays.asList(new User(), new User());
/* (?) How to make mockUserDao return mockResult through its Handler argument? */
Future<List<User>> future = Future.future();
userService.getUsers(future);
future.setHandler(ar -> {
assertEquals(2, ar.result().size());
async.complete();
});
async.awaitSuccess();
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?它不适合正常的 Mockito 模式when( serviceMock.method (any(Argument.class))).thenAnswer(new Result())因为mockResult不是从方法中返回,而是通过处理程序返回。
嘲Handler也。
Handler mockedHandler = mock(Handler.class);
when(mockedHandler.result()).thenReturn(mockResult);
when(userDao.loadUsers(any(Handler.class))).thenReturn(mockedHandler);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1361 次 |
| 最近记录: |