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(),单元测试是否尝试评估实际代码中的表达式,以便将其与 any() 对象进行比较。

如果不是,当我显式模拟函数时,单元测试尝试评估表达式的原因可能是什么。

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

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

相关内容

  • 没有找到相关文章

最新更新