我正在尝试像这样使用 PowerMock 模拟私有(private)方法
BalanceResponseGenerator balanceResponseGenerator = spy(new BalanceResponseGenerator());
when(balanceResponseGenerator, "getBalance",client.getParent(), request.getTerminal().getRetailPoint().getRetailNetwork(), result).thenReturn(new Balance());
但是调用的是真正的方法,为什么会这样呢?怎么了?我看到了几个例子,但它们都不适合我。请解释一下!
最佳答案
我猜问题是你在 Mockito.when(..) 上调用了 when 调用。 PowerMockito.when(..)
documentation 给出了正确的示例
@RunWith(PowerMockRunner.class)
// We prepare PartialMockClass for test because it's final or we need to mock private or static methods
@PrepareForTest(PartialMockClass.class)
public class YourTestCase {
@Test
public void privatePartialMockingWithPowerMock() {
PartialMockClass classUnderTest = PowerMockito.spy(new PartialMockClass());
// use PowerMockito to set up your expectation
PowerMockito.doReturn(value).when(classUnderTest, "methodToMock", "parameter1");
// execute your test
classUnderTest.execute();
// Use PowerMockito.verify() to verify result
PowerMockito.verifyPrivate(classUnderTest, times(2)).invoke("methodToMock", "parameter1");
}
}
关于java - 使用 Mockito 和 PowerMock 模拟私有(private)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17091412/