【发布时间】:2015-11-13 10:26:59
【问题描述】:
我试图在一个类中模拟一个静态方法。
PowerMock.mockStatic(WebUtils.class);
EasyMock.expect(WebUtils.getRequest(EasyMock.anyObject(Object.class))).andReturn(httpServletRequest).anyTimes();
PowerMock.replayAll();
getRequest 是一个非最终静态方法。在第 2 行,JUnit 抛出以下错误。
java.lang.IllegalStateException: no last call on a mock available
at org.easymock.EasyMock.getControlForLastCall(EasyMock.java:520)
at org.easymock.EasyMock.expect(EasyMock.java:498)
at --
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68)
at org.powermock.modules.junit4.internal.impl.PowerMockJUnit44RunnerDelegateImpl$PowerMockJUnit44MethodRunner.runTestMethod(PowerMockJUnit44RunnerDelegateImpl.java:310)
Powermock 版本:1.6.2 & 使用 PowerMockRunner.h 运行测试类
【问题讨论】:
-
你有@PrepareForTest注解吗?
-
是的。我在那里上错课了。在@PrepareForTest 中提供WebUtils.class 之后,它就可以工作了。谢谢!
-
现在可以正常使用了。因此,我为您的问题添加了答案。