当前位置: 首页 > 知识库问答 >
问题:

springboot - 利用mockito模拟redistemplate执行lua脚本出错?

容宏逸
2023-07-18

在利用mockito模拟redistemplate执行lua脚本的时候,使用mockito的参数匹配器一直无法成功,不知道是否有前辈遇到这样的问题,控制台出现的错误如下:
image.png
测试代码如下:
希望redistemplate执行脚本后,返回定义的mockResult列表

@SpringBootTest@RunWith(MockitoJUnitRunner.class)public class OrderServiceImplTest {    @Autowired    public OrderServiceImpl orderService;    @MockBean    public PatientFeignClient patientFeignClient;    @MockBean    @Qualifier("redisTemplate")    private RedisTemplate redisTemplate;    @MockBean    private HospitalFeignClient hospitalFeignClient;    @MockBean    private RabbitService rabbitService;    /*    测试排班id不存在     */    @Test    public void saveOrder() {        List<Object> mockResult = Arrays.asList(1); when(redisTemplate.execute(Mockito.any(DefaultRedisScript.class),Mockito.anyList(),Mockito.eq(100))).thenReturn(mockResult);          }}

共有1个答案

卞博简
2023-07-18
when(redisTemplate.execute(    argThat(new ArgumentMatcher<DefaultRedisScript<List>>() {        @Override        public boolean matches(DefaultRedisScript<List> argument) {            // 加条件来匹配你的DefaultRedisScript            return argument != null;        }    }),    argThat(new ArgumentMatcher<List<String>>() {        @Override        public boolean matches(List<String> argument) {            // 在这加条件来匹配你的List            return argument != null && !argument.isEmpty();        }    }),    eq(100))).thenReturn(mockResult);
 类似资料:
  • 有人能告诉我原因或上面代码的更好替代方案吗?

  • --eval 例如: redis-cli —eval myscript.lua key1 key2 , arg1 arg2 arg3

  • Lua 脚本功能是 Reids 2.6 版本的最大亮点, 通过内嵌对 Lua 环境的支持, Redis 解决了长久以来不能高效地处理 CAS (check-and-set)命令的缺点, 并且可以通过组合使用多个命令, 轻松实现以前很难实现或者不能高效实现的模式。 本章先介绍 Lua 环境的初始化步骤, 然后对 Lua 脚本的安全性问题、以及解决这些问题的方法进行说明, 最后对执行 Lua 脚本的两

  • 主要内容:一、Lua和Redis,二、运行机制,三、开发和应用,四、总结一、Lua和Redis 这篇其实和Redis本身的源码关系不是太大了,主要是看一下对REDIS的支持。Lua可能好多人都没有听说过,但是如果搞过网游的人,估计都用过,做为一种胶水语言,Lua对C/C++的支持非常友好,这是一般的脚本语言都没有做到的。它很小很轻量,所以非常容易与其它程序集成。在魔兽和仙剑等游戏中都广泛使用。 Lua的缺点也很明显,对开发支持的力度不大,功能也少,功能少,就意味着如果

  • 我已经在我的系统中安装了python、pip和selenium,我正在基本站点上测试一个示例代码。 代码: 如何解决此问题?

  • 如果playbook文件比较大,在执行的时候只是想执行部分功能,这个时候没有有解决方案呢?Playbook提供了tags变迁可以实现部分运行。 tags的基本用法 例如,文件example.yml如何所示,标记了两个tag:packages和configuration tasks: - yum: name={{ item }} state=installed with_items: