模拟方法仍然被调用
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 变量中声明。
我模拟了一个 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 变量中声明。