我对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。如果对象属性被嘲笑,就不可能直接设置它?
在文档中找不到关于这一点的任何信息。
谢谢。
EDIT 1:这是MyObject中使用Mockito 设置的属性的方法
public Double getProperty1X2() {
return 2 * property1;
}
即使我设置了属性值,这个方法在测试中也会返回0。也许是因为它直接使用字段而不是getter?
您可以查看我对此讨论的回答:-
是否可以调用模拟对象';s方法?
对你来说,关键是:-
when(object.getProperty1()).thenCallRealMethod();