Mockito.when评估表达式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mockito.when评估表达式相关的知识,希望对你有一定的参考价值。

我为一个创建s3客户端的函数编写了一个JUnit测试,获取数据来解析它。所以,我有一个名为M,P和M的测试类MTest的类。 MTest有注释

@RunWith(MockitoJUnitRunner.class)

在上面。 P的对象是M中的成员变量。我已经在我的测试类中定义了变量,如下所示

@InjectMocks
private M MObj;

@Mock
private P PObj;

在我的设置(@Before)功能中,我有

when(PObj.processInputFile(any(), anyInt())).thenReturn(**something**);

实际实现中processInputFile的第一个输入是来自S3的输入流,它涉及创建s3客户端并进行网络调用,这就是我使用when.thenReturn函数来模拟单元测试功能的原因。

Pobject.processInputFile(**expressions evals new input stream from s3**, <some integer>)

当我使用上述配置运行测试时,我在实际的processInputFile函数中收到错误,因为它尝试从没有此类访问权限的服务器进行网络调用。

我的问题是 - 如果我在单元测试中有任何(),单元测试是否尝试评估实际代码中的表达式,以便将其与any()对象进行比较。

如果没有,当我明确地模拟该函数时,单元测试试图评估表达式的原因可能是什么。

如果是,有没有办法解决这个问题,让单元测试不评估实际代码中的表达式。

答案

如果它是final,则执行该方法,因为默认情况下Mockito不能模拟最终方法。

以上是关于Mockito.when评估表达式的主要内容,如果未能解决你的问题,请参考以下文章

在 intellij 上调试评估表达式

IntelliJ:求值lambda表达式在调试时引发编译错误

Mockito:试图监视方法正在调用原始方法

JSONPath中的表达式

模拟when().thenReturn()返回值不起作用

莫基托。验证方法参数