3

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

4

1 回答 1

1

您可以查看我对此讨论的回答:-

是否可以调用模拟对象的方法?

对你来说关键点是:-

when(object.getProperty1()).thenCallRealMethod();
于 2014-08-01T02:56:05.597 回答