基本上,我正在尝试设置 final方法的结果。方法很简单,如下:
@NotNull
public final Server getServer() {
return this.server;
}
我这样 mock 它:
EasyMock.expect(object.getServer()).andReturn(server);
其中服务器是 POJO。这会抛出这个:
java.lang.IllegalStateException: incompatible return value type
at org.easymock.internal.MocksControl.andReturn(MocksControl.java:281)
对于那条线。 我尝试不使用 POJO 作为服务器,而是 mock 它。
@Mock
private Server server = mock(Server.class);
但仍然是同样的错误。我绝对肯定它们是完全相同的类型。为什么会发生这种情况?
现在,由于某种原因我收到了不同的错误:
java.lang.IllegalStateException: no last call on a mock available
相同的代码,我所拥有的就是这个:
@Test
public void test() {
EasyMock.expect(object.getServer()).andReturn(server);
replayAll();
TestedObject.useObject(object);
}
最佳答案
模拟 final方法时出现错误的原因是 EasyMock 不支持它。 https://easymock.org/user-guide.html#mocking-limitations
Final methods cannot be mocked. If called, their normal code will be executed.
您可以使用 PowerMock 来模拟 final方法和静态方法。
关于java - EasyMock 在 final方法上抛出不兼容的返回值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60627452/