小编LiQ*_*eng的帖子

如何用Java中的新功能替换模拟功能

我正在用Mockito编写UT,并且我想替换我的模拟函数(该数据库选择操作)

class DataBaseSelect {
    List<Long> selectDataFromDB(Long key){
         List<Long>  result  = db.select(key);
         return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

用我在Test类中编写的新功能(使用地图模拟数据库选择);

class MapSelect {
    List<Long> selectDataFromMap(Long key){
         List<Long> result = map.get(key);
         return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想用右键输入返回正确的值

我尝试使用ArgumentCaptor做到这一点,如下所示,但它没有按我的要求工作

ArgumentCaptor<Long> argumentCaptor = ArgumentCaptor.forClass(Long.class);
Mockito.when(dataBaseSelect.selectDataFromDB(argumentCaptor.capture())).thenReturn(MapSelect.selectDataFromMap(argumentCaptor.getValue()));
//some thing else here , 
Run Code Online (Sandbox Code Playgroud)

我想在调用dataBaseSelect.selectDataFromDB时进行模拟,然后从MapSelect.selectDataFromMap返回结果,并从dataBaseSelect.selectDataFromDB传递参数。

java mockito

5
推荐指数
1
解决办法
669
查看次数

标签 统计

java ×1

mockito ×1