想问你一个问题。
如何从testable类调用的方法中正确返回一些数据?
例如,我有下一个结构:
Class SomeClass {
public void method1(){
//some logic here
List<Object> howToReturnHereValues = gatData();
//some logic here
}
public List<Object> getData(){
return List<Object>;
}
}
现在我想测试method1()
,但我不知道如何模拟返回getData()
的来电List<Object>
。
请问任何建议?
答案 0 :(得分:2)
现在我想测试method1(),但我不知道如何模拟调用 getData()返回List。
模拟正在测试的类的公共方法是一个坏主意。
单元测试应测试行为和模拟依赖项。在这里,您在模拟测试类的行为时仅对行为的一部分进行单元测试。
如果班级是我们的,你可以:
getData()
的公共方法。getData()
公共方法,如果您不想在调用它的每个测试方法中重复getData()
方法的测试,则模拟此新依赖项。如果类不可修改并且确实需要模拟调用,则可以在被测对象上使用Mockito框架的spy()
方法来模拟特定方法的模拟行为。
答案 1 :(得分:1)
您可以使用间谍执行此操作,如此处所述:https://static.javadoc.io/org.mockito/mockito-core/2.7.17/org/mockito/Mockito.html#13
示例:
@Test
public void testMethod1() throws Exception {
SomeClass someClass = new SomeClass();
SomeClass spy = Mockito.spy(someClass);
Mockito.when(spy.getData()).thenReturn(Arrays.asList("blaat", "blabla"));
spy.method1();
}
这将返回一个“blaat”和“blabla”列表,可以由method1中的逻辑使用。