繁体   English   中英

如何模拟java类中的特定静态方法?

[英]How to mock specific static method in a java class?

在我的测试类中有许多静态方法,但我只想模拟测试类的特定方法。

有没有什么方法可以让我模拟特定的方法而其余的静态方法表现正常?

以及如何为特定值存根方法

假设这是我的方法PowerMockito.stub(PowerMockito.method(ServiceUtils.class, "getBundle",String.class)).toReturn(bundle);

我希望 getBundle 方法对传递的不同参数有不同的行为,例如: String 可以是 abc 或 def ,因此对于每个字符串,getbundle 方法的行为应该不同。

我只是希望有什么方法可以代替 PowerMockito.method 中的 String.class 我可以传递像“abc”这样的值。

您可以创建真实对象的间谍。 当您使用 spy 时,将调用真正的方法(除非方法被存根)。

这是官方文档中的示例。

List list = new LinkedList();
List spy = spy(list);

//optionally, you can stub out some methods:
when(spy.size()).thenReturn(100);

//using the spy calls *real* methods
spy.add("one");
spy.add("two");

//prints "one" - the first element of a list
System.out.println(spy.get(0));

//size() method was stubbed - 100 is printed
System.out.println(spy.size());

//optionally, you can verify
verify(spy).add("one");
verify(spy).add("two");

你可以做这样的事情(如果你使用 mokito)

 when(mockedList.get(0)).thenReturn("first");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM