繁体   English   中英

Mockito-仅模拟一种方法

[英]Mockito - mocking only a method

所以我有以下问题:

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

关键是,该类具有一个方法,该方法返回一个布尔值,并且它通过SAP服务获取值,当然我不想模拟它。 因此,当然,我想使用Mockito中的when方法来确保它们返回不同的值,因为我要测试的类根据文件在方法上返回的内容对文件进行排序。

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

为此,我需要模拟对象:

@mock
private Object obj1;

在我的设置中:

obj1 = mock(Object.class);

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

尽管如此,我该怎么做,我需要用一些东西填充对象,我不能将它们留空。 只是除了模拟对象之外,没有其他方法可以设置方法的返回值。

永远不要使用@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM