【问题标题】:Powermock java.lang.IllegalStateException: no last call on a mock availablePowermock java.lang.IllegalStateException:没有可用的模拟最后一次调用
【发布时间】: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 之后,它就可以工作了。谢谢!
  • 现在可以正常使用了。因此,我为您的问题添加了答案。

标签: junit powermock easymock


【解决方案1】:

检查@PrepareForTest注解是否设置正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    • 2018-11-03
    • 2015-05-30
    相关资源
    最近更新 更多