Java 仍然调用模拟方法

Java 仍然调用模拟方法,java,mockito,Java,Mockito,我模拟了一个公共字符串方法: Mockito.when(SomeClass.staticMethod(Mockito.anyString(), Mockito.any(ArrayNode.class), Mockito.anyString())).thenReturn(JSON_RESULT); 此方法的指令中包含一个名为staticMethod的静态方法调用,该调用来自不同的类 当运行我的测试时,在不应该调用的地方调用staticMethod。为什么?我只想在调用someMethod时返回一

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

Mockito.when(SomeClass.staticMethod(Mockito.anyString(), Mockito.any(ArrayNode.class), Mockito.anyString())).thenReturn(JSON_RESULT);
此方法的指令中包含一个名为
staticMethod
的静态方法调用,该调用来自不同的类

当运行我的测试时,在不应该调用的地方调用
staticMethod
。为什么?我只想在调用
someMethod
时返回一个
字符串。它进入它的内部并调用
staticMethod
这一事实使它破坏了代码(因为
staticMethod
使用一个路径来挖掘
文件,而在单元测试中它不知道该文件)

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

其中一个方法是获取一个文件(使用另一个类的静态方法),处理它,然后返回一个字符串。为了返回自己的
JSON
字符串,我模拟了这个方法

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


尽管被模拟,为什么它仍然进入方法?

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

您可以添加您试图测试的内容的完整代码吗?
someClass
是最终的还是私有的?
someClass.someMethod
final还是private?
someClass
是间谍吗?请参阅更新的帖子@durron597:someClass是在我的测试方法中模拟的最终局部变量。可能是因为它是本地的吗?我问的是关于类定义本身的问题,而不是关于实例的问题。