java - Mockito ArgumentCaptor 为空
问题描述
我是初学者,请多多包涵。:)
场景:在 IntelliJ / Maven 上使用 Mockito 进行 JUnit 测试。我正在尝试使用 Java 中的 ArgumentCaptor 读取传递的参数。问题是,这个俘虏本身是空的。俘虏似乎根本不起作用。
@Captor
private ArgumentCaptor<Invoice> cap;
...
verify(invoiceDao).insert(cap.capture());
我怀疑问题是,由于其他原因,我不能使用 @ExtendWith(MockitoExtension.class) 。(我在 @BeforeEach 方法中放置了一些存根,它抛出了 UnnecessaryStubbingExceptions。)
有没有办法在没有@ExtendWith 的情况下使用 th ArgumentCaptor?或者这首先不是我问题的原因吗?
如果我完全迷失在这里,我很抱歉。提前感谢您的帮助!
解决方案
事实上,@Captor
注释仅在您启用 MockitoExtension 时才有效。
但是您也可以手动初始化 ArgumentCaptor 而不使用@Captor
注释:
ArgumentCaptor<Xxx> argumentCaptor = ArgumentCaptor.forClass(Xxx.class);
或者,如果您只是需要避免 UnnecessaryStubbingExceptions,您可以@MockitoSettings(strictness = Strictness.LENIENT)
在注解上方添加@ExtendWith(MockitoExtension.class)
,并继续使用@Captor/@Mock。
推荐阅读
- swift - ORKTaskViewController - isNavigationBarHidden
- ruby-on-rails - 即使我填写了姓名、电子邮件、密码,验证阻止注册
- windows-10 - Windows 10:所需设备未连接或无法访问。0xc000000e
- node.js - 在 Google Maps Geocode API 中使用异步等待时遇到问题
- alexa - Jovo Alexa 视频 onEnd 活动?
- r - 绘制线性固定效应模型时如何从jtools中的interact_plots中提取不同组的斜率和截距值
- python - 在 main() 函数内部使用 Python 中的 IF 语句
- python - 将 Anaconda 安装到具有 Python2.7 和 3.7 的 macOS。Pandas 只导入到 2.7;如何导入到 3.7?
- node.js - 更新 Mongoose 模式数组中的元素
- javascript - Vue路由器中的复杂重定向