嘲笑——嘲笑只是一种方法



所以我有以下问题:

我有一个类,我创建了它的三个对象(obj1, obj2, obj3)。我通过Testclass中的setter方法为它们赋了不同的值,因为它们将在后面的列表中使用。

问题是,类有一个方法,它返回一个布尔值,它通过SAP-Services获得值,当然我不想嘲笑。当然,我想使用来自Mockito的when-方法来确保,它们返回不同的值,因为我想测试的类,根据它们在方法上返回的值对文件进行排序。

when(obj1.method()).thenReturn(true);
when(obj2.method()).thenReturn(false);
when(obj3.method()).thenReturn(true);
要做到这一点,我需要模拟对象:
@mock
private Object obj1;

和在我的setUp中:

obj1 = mock(Object.class);

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

我如何做到这一点,尽管如此,我需要用一些东西填充对象,我不能让它们空白。只是没有其他方法可以设置方法的返回值,只能模拟对象。

如果只想模拟对象的某些方法,可以使用@Spy不过,在这种情况下,该方法的模拟方式应该有所不同doReturn(真正的)当(其中obj1) .method ();

详情请参阅http://docs.mockito.googlecode.com/hg/1.9.5/org/mockito/Spy.html

不要同时使用@Mock obj1obj1 = mock(Object.class);…它们都在做同样的事情,其中一个覆盖了另一个。

如果你使用@RunWith(MockitoJunitRunner.class)@Mock,你不需要mock(...)(大多数时候)。

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

相关内容

  • 没有找到相关文章

最新更新