[英]mockito mock verify
//Let's import Mockito statically so that the code looks clearer
import static org.mockito.Mockito.*;
//mock creation
List mockedList = mock(List.class);
//using mock object
mockedList.add("one");
mockedList.clear();
//verification
verify(mockedList).add("one");
verify(mockedList).clear();
我不明白这种结构的意义是什么? 它有什么帮助? 它与仅调用函数有何不同?
该文档很薄。
谢谢
当您mockedList.add("one");
它会在记住您的操作的同时对mocked object
执行操作。 因此,当您verify(mockedList).add("one");
,它验证add
被称为上mockedList
与争论one
。
希望你能有所作为。
您希望测试类A的某些方法Foo
在类B的对象上调用了方法Bar
。换句话说,您正在测试类A。在测试过程中,您对类B进行了模拟。然后传递此模拟以某种方式反对A类(取决于A类的实际工作方式)。 当您的测试运行Foo
类A的方法,你期望的Bar
法得到您的B级的模拟称为通过调用verify
的Bar
法,试验后Foo
的方法,你可以检查Foo
方法实际上工作正常-称为Bar
。
Mockito的verify方法是验证方法的调用时间,如果调用时间为1,则可以省略此参数,请参见Mockito Line 1473的源代码
public static <T> T verify(T mock) {
return MOCKITO_CORE.verify(mock, times(1));
}
所以你编码
verify(mockedList).add("one");
//is the same as
verify(mockedList,times(1)).add("one");
确实是要验证add方法的执行一次
确实在您的示例中这很明显,但是验证方法调用的主要思想出现在实际的代码测试期间-想象一些代码执行方法调用,例如:
class A{
....
service.doSomething(<some arguments>)
....
}
为了测试它,您将传递模拟服务对象,但有时您想验证为该调用传递的特定参数值(或调用次数),因此您将像示例中那样使用verify。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.