gpt4 book ai didi

spring - Mockito 什么时候/然后不工作

转载 作者:行者123 更新时间:2023-11-28 21:26:57 26 4
gpt4 key购买 nike

我正在尝试在 SubscriptionInterceptor 的单元测试中模拟 ValidatorService

validator = Mockito.mock(ValidatorService.class);
Mockito.when(validator.validateSubscription(any(), any(), any())).thenReturn("");
interceptor = new SubscriptionInterceptor(validator);

稍后,当拦截器调用模拟验证器的 validateSubscription 方法时,将调用实际类的实例,而不是模拟。为什么?如何让方法调用返回一个空字符串?

最佳答案

在评论中解决:

Method was declared final.

Mockito 通过提供相关类的代理(子类)来工作,每个方法都被覆盖。但是,对于 final 类和方法,Java 假定它可以检测到它需要调用哪个实现,并跳过动态方法查找。因此,Mockito 无法覆盖 final 方法、static 方法或 final 类上的方法的行为,并且因为您没有与模拟 Mockito 甚至无法警告您。

这是一个很常见的问题;如果 Mockito 无法 stub /验证您的方法,请务必检查 final 字段。

关于spring - Mockito 什么时候/然后不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37973148/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com