抱歉这样一个基本问题。我有点气馁,为什么我不能为我的生活配置一个thenReturn我的模拟。在eclipse单元测试视图中,我得到了这个故障跟踪:
org.mockito.exceptions.misusing.MissingMethodInvocationException:
when() request an argument which has to be 'a mthod call on a mock'.
For example:
when(mock.getArticles()).thenReturn(articles);
但这是我的代码,它实际上只是一个简单的POJO:
ConnectionDetails mockDetails = mock(ConnectionDetails.class);
when(mockDetails.getHostName()).thenReturn("hello");
assertEquals("hello", mockDetails.getHostName());
这应该可行吗?
方法声明:
public final String getHostName() {
return hostName;
}
感谢您指出问题是我的方法声明中的“最终”。
答案 0 :(得分:1)
Gavin已在评论中解决:
您是否检查过getHostName不是最终的?
Mockito模拟是代理(有效地动态生成的子类),标记方法final
阻止它们触发Mockito的覆盖。因此,您的测试调用实际方法,Mockito提供MissingMethodInvocationException。