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 obj1
和 obj1 = 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
所以我有以下问题:
我有一个 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 obj1
和 obj1 = 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