Mockito 在 when() 中使用 ArgumentMatchers.any(class) 获取 null 异常

问题描述 投票:0回答:1

我怎样才能让它在我的模拟测试中发挥作用???,我读过的所有答案都不适合我。

我正在尝试使用 ArgumentMatchers.any(class),但我不断收到 nullInsteadOfMockException。或者我如何才能让它以另一种方式工作。

doNothing().when(ArgumentMatchers.any(Class.class)).method();

When() 中的对象不能被模拟。

我尝试过ArgumentMatchers.any(Class.class)

ArgumentMatchers.isA(Class.class)
ArgumentMatchers.<Class>any()

他们都给了我一个 nullInsteadOfMockException。

如果你不能像这样调用mock,我如何告诉mockito,无论when()中是什么类型的Class对象,在调用该方法时都不执行任何操作。

编辑: 我读得越多,看起来我需要使用 powermockito,但我还不确定。

java mockito powermock powermockito argument-matcher
1个回答
0
投票

你的论点都混淆了。正确的调用必须如下所示:

doNothing().when(yourMockObject).yourMethod(ArgumentMatchers.any(Class.class));

这将匹配诸如

yourMockObject.yourMethod(String.class)
之类的调用。

匹配器本身记录已被内部调用,然后简单地返回

null
doNothing().when(null)....
显然是错误的,因为你只能在非 null 实例上存根方法 - 而且你无论如何也不能在 null 上调用方法。

© www.soinside.com 2019 - 2024. All rights reserved.