当前位置:  开发笔记 > 编程语言 > 正文

使用Mockito模拟一个带有对象参数的方法

如何解决《使用Mockito模拟一个带有对象参数的方法》经验,为你挑选了1个好方法。



1> weston..:

用途argThat:

public final class IsSameLatLong extends ArgumentMatcher {

  private final GeoPoint as;

  public IsSameLatLong(GeoPoint as) {
      this.as = as;
  }

  //some sensible value, like 1000th of a second i.e. 0° 0' 0.001"
  private final static double EPSILON = 1.0/(60*60*1000); 

  private static boolean closeEnough(double a, double b) {
     return Math.abs(a - b) < EPSILON;
  }

  public boolean matches(Object point) {
      GeoPoint other = (GeoPoint) point;
      if (other == null) return false;
      return closeEnough(other.getLat(), as.getLat()) &&
             closeEnough(other.getLong(), as.getLong());
  }
}

然后像这样使用:

when(cityDefinitionRepository.findCitiesNearby(argThat(new IsSameLatLong(geoPoint)), eq(SOURCE), eq(2))).thenReturn(cityDefinitionsArrival);
when(cityDefinitionRepository.findCitiesNearby(argThat(new IsSameLatLong(geoPoint2)), eq(SOURCE), eq(2))).thenReturn(cityDefinitionsDeparture);

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有