在我的测试类中有很多静态方法,但我只想模拟测试类的一个特定方法。
有没有任何方法可以让我只模拟特定的方法,而静态方法的其余部分正常工作?
以及如何存根特定值的方法
假设这是我的方法PowerMockito.stub(PowerMockito方法(ServiceUtils.class,"getBundle",String.class)).toReturn(bundle)
我希望getBundle方法对于传递的不同参数表现不同例如:字符串可以是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");