模拟方法仍然被称为

时间:2015-08-27 13:37:47

标签: java mockito

我已经模拟了一个公共String方法:

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

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

运行我的测试时,staticMethod会被调用。为什么?我只想在调用String时返回someMethod。事实上它正在进入它并调用staticMethod会使它破坏代码(因为staticMethod使用路径来挖掘File,它在单元测试中不知道

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

其中一种方法是获取一个File(使用另一个类中的静态方法),处理它并返回一个String。我嘲笑这个方法是为了返回我自己的JSON字符串。

但它仍然进入该方法试图获取文件,处理它等等。因为我在单元测试环境中,我无法访问所有内容,因此NullException错误我'在调用静态方法时得到。

为什么即使被嘲笑它仍然进入方法?

1 个答案:

答案 0 :(得分:0)

我发现为什么它不起作用:我正在模拟的类被用作局部变量,而它应该在类变量中声明。