Mockito - 仅模拟一种方法

Mockito - mocking only a method

所以我有以下问题:

我有一个 class,我为它创建了三个对象(obj1、obj2、obj3)。我在我的测试 class 中通过 setter-methods 为它们分配了各种值,因为它们稍后将在列表中使用。

问题是,class 有一个方法,return 是一个布尔值,它通过 SAP 服务获取值,当然我不想嘲笑它。所以我当然想使用 Mockito 的 when-method 来确保它们 return 不同的值,因为我想测试的 class 根据它们 return 对文件进行排序关于方法。

when(obj1.method()).thenReturn(true);
when(obj2.method()).thenReturn(false);
when(obj3.method()).thenReturn(true);

为此,我需要模拟对象:

@mock
private Object obj1;

在我的设置中:

obj1 = mock(Object.class);

但是当我这样做时,它不允许我为对象设置值。

尽管如此,我该怎么做,我需要用一些东西填充对象,我不能让它们留空。只是没有其他方法可以设置方法的 return-value 而不是模拟对象..

切勿将 @Mock obj1obj1 = mock(Object.class); 一起使用...它们都在做同样的事情,并且一个会覆盖另一个。

如果您使用 @RunWith(MockitoJunitRunner.class)@Mock,则不需要 mock(...)(大部分时间)。

此外,我怀疑 obj1 应该是 Object 类型,我猜它应该是一个更具体的接口类型。

如果只想模拟对象的某些方法,可以使用@Spy 在这种情况下,该方法应该有点不同 doReturn(true).when(obj1).method();

有关详细信息,请参阅 http://docs.mockito.googlecode.com/hg/1.9.5/org/mockito/Spy.html