在我的测试类中有许多静态方法,但我想只模拟测试类的特定方法。
我有什么方法可以模拟只有特定的方法,其余的静态方法行为正常吗?
以及如何为特定值存根方法
假设这是我的方法 PowerMockito.stub(PowerMockito.method(ServiceUtils.class," getBundle",String.class))。toReturn(bundle);
我希望getBundle方法对于传递的不同争论行为不同 例如:字符串可以是abc或def,因此对于每个字符串,getbundle方法的行为应该不同。
我只是希望有任何方法,而不是PowerMockito.method中的String.class,我可以传递像" abc"。
答案 0 :(得分:2)
您可以创建真实对象的间谍。当你使用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");
答案 1 :(得分:0)
你可以做这样的事情(如果你使用mokito)
when(mockedList.get(0)).thenReturn("first");