在 Java 中模拟静态方法时,您可能会遇到需要选择性地存根特定方法并返回自定义对象。 PowerMock 提供了实现此目的所需的功能。
要模拟静态方法,您首先需要使用 PowerMockito.mockStatic() 为目标类启用静态模拟。但是,如果类包含多个具有不同返回类型的静态方法,分配给此方法的默认应答策略可能会导致类型不匹配错误。
相反,您应该使用一个-mockStatic() 的参数重载以启用静态模拟,然后使用 PowerMockito.when() 和 thenReturn() 指定各个方法所需的行为。这允许您为每个存根方法定义自定义返回值。
考虑一个具有两个静态方法的类,一个返回 String,另一个返回 int:
class ClassWithStatics { public static String getString() { return "String"; } public static int getInt() { return 1; } }
要存根 getString() 方法以返回“Hello!”,您可以执行以下操作以下:
PowerMockito.mockStatic(ClassWithStatics.class); when(ClassWithStatics.getString()).thenReturn("Hello!"); System.out.println("String: " + ClassWithStatics.getString());
请注意,getInt() 方法没有显式存根。它将使用返回 0 的默认行为。
通过使用静态模拟和存根技术的正确组合,您可以有选择地模拟单个静态方法并在 PowerMock 中返回一个对象。这使您能够测试和隔离 Java 代码中的特定静态方法行为。
以上是如何使用 PowerMock 模拟单个静态方法并返回自定义对象?的详细内容。更多信息请关注PHP中文网其他相关文章!