Mockito设有私人财产

时间:2013-07-19 09:22:08

标签: properties mockito setter

我和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?

1 个答案:

答案 0 :(得分:1)

您可以在此讨论中查看我的答案: -

Is it possible to invoke mocked object's method?

关键是: -

when(object.getProperty1()).thenCallRealMethod();