处理包含多个静态方法的类时,在模拟单个静态方法的同时确保它存在的挑战就出现了返回一个对象。以下是使用 PowerMockito 的详细解决方案:
启用静态模拟:
首先为要使用 PowerMockito 修改的类启用静态模拟。模拟静态(类.类)。这允许您为该类中的静态方法设置特定行为。
存根方法:
指定目标的行为静态方法,使用when-thenReturn语法。例如:
when(Class.m1(param1, param2)).thenReturn(objectToReturn);
这指定当使用给定参数调用 m1 时,它应该返回提供的对象。
避免默认返回值:
默认情况下,PowerMockito 为未存根的静态方法提供自己的默认值。要覆盖此并返回自定义对象,至关重要的是使用 1 参数版本的 mockStatic 而不指定默认策略。
示例实现:
考虑以下代码片段:
PowerMockito.mockStatic(Static.class); when(Static.m1("param1", "param2")).thenReturn(new Object());
此代码模拟Static 类中的静态方法 m1 并存根它以返回对象的新实例。
使用模拟方法:
一次静态方法已被模拟和存根,您可以照常使用它。该方法调用将被 PowerMockito 拦截并返回指定的对象。
请记住,这里的关键区别是使用 1 参数版本的 mockStatic 来启用静态模拟,而无需指定默认策略,然后使用 when-thenReturn 语法对单个静态方法进行存根以返回对象。
以上是如何使用 PowerMockito 模拟返回对象的单个静态方法?的详细内容。更多信息请关注PHP中文网其他相关文章!