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评估表达式的主要内容,如果未能解决你的问题,请参考以下文章