模拟方法仍然被调用

Mocked method still called

我模拟了一个 public 字符串方法:

Mockito.when(SomeClass.staticMethod(Mockito.anyString(), Mockito.any(ArrayNode.class), Mockito.anyString())).thenReturn(JSON_RESULT);

此方法在其指令中包含一个名为 staticMethod 的静态方法调用,来自不同的 class。

当 运行 我的测试时, staticMethod 在不应该被调用的地方被调用。为什么?当调用 someMethod 时,我只想 return 一个 String。它进入其中并调用 staticMethod 的事实使其破坏了代码(因为 staticMethod 使用路径挖掘 File,它在单元测试中不知道)

编辑:我正在 运行 测试获取 SQL 文件内容(File classes)的服务,执行查询(使用 Daos classes) 并检索 JSON 字符串。

其中一个方法是获取一个文件(使用来自另一个 class 的静态方法),处理它,然后 return 一个字符串。我嘲笑这个方法是为了 return 我自己的 JSON 字符串。

但它仍然进入尝试获取文件、处理文件等的方法。由于我在单元测试环境中,我无法访问所有内容,因此出现 NullException 错误我正在调用静态方法。

为什么mock了还进方法?

我发现它不起作用的原因:我模拟的 class 被用作局部变量,而它应该在 class 变量中声明。