我和Mockito有一个小问题。假设我有这段代码:
MyObject object = mock(MyObject.class);
System.out.println("PROPERTY 1 BRUT VALUE : " + property1Value);
object.setProperty1(property1Value);
System.out.println("PROPERTY 1 VALUE BEFORE STUB : " + object.getProperty1());
when(object.getProperty1()).thenReturn(property1Value);
System.out.println("PROPERTY 1 VALUE AFTER STUB : " + object.getProperty1());
PROPERTY 1 BRUT VALUE : 150.0
PROPERTY 1 VALUE BEFORE STUB : 0.0
PROPERTY 1 VALUE AFTER STUB : 150.0
问题是我的对象属性没有直接设置。我在MyObject中有一个使用它的方法,它总是返回0。如果对象属性被模拟,则无法直接设置它?
关于这一点的文档中没有找到任何内容。
感谢。
编辑1 :以下是MyObject中使用Mockito设置的属性的方法
public Double getProperty1X2() {
return 2 * property1;
}
即使我设置了属性值,此方法在我的测试中返回0。也许是因为它直接使用了字段而不是getter?
答案 0 :(得分:1)
您可以在此讨论中查看我的答案: -
Is it possible to invoke mocked object's method?
关键是: -
when(object.getProperty1()).thenCallRealMethod();