Mockito.when评估表达式

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

我为一个创建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()对象进行比较。

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

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

unit-testing junit mockito mockitowhen
1个回答
0
投票

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

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