美文网首页单元测试
Mockito的参数匹配

Mockito的参数匹配

作者: rockops | 来源:发表于2018-01-08 14:31 被阅读1621次

上篇我们已经说过,mockito中可以控制mock对象的方法,返回我们想要的值,而无需真正执行它。
使用方法是doReturn(...).when(mockObject).invokeMethod(...params)
其中

  • doReturn() 中是你设定的返回值
  • when() 中是mock的对象
  • invokeMethod 是mock对象的具体方法
  • invokeMethod() 中的参数是调用方法的参数值

传入调用方法中的参数,可以使用Mockito中的any()来做参数的匹配,代表任意的值,还有anyString(), anyInt(), any(Class<T> clazz)等,具体可以查看org.mockito.Matchers

这里我经常用到的一个是any(Class<T> clazz),传入任意一个特定类型的对象,控制方法的返回值。那如果再细化灵活一些,要根据对象的某一个属性的取值来进行匹配呢?比如要传入Person这个对象,测试方法要根据性别来做出不同的返回,应该怎么写参数匹配?Mockito为我们提供了ArgumentMatcher的方法。具体使用如下,

doReturn(mockValue).when(mockObject).mockMethod(argThat(new ArgumentMatcher<Person>() {
    @Override
    public boolean matches(Object o) {
        return "male".equals(((Person) o).getSex());
    }
}));

参考:
https://www.planetgeek.ch/2011/11/25/mockito-argumentmatcher-vs-argumentcaptor/

相关文章

网友评论

    本文标题:Mockito的参数匹配

    本文链接:https://www.haomeiwen.com/subject/zflbnxtx.html