如何使用整数参数值大于X的Mockito来模拟方法调用?如何模拟一个大于X的整数参数的方法调用
我想编写这样的事:
doReturn("FooBar").when(persons).getPersons(Mockito.gt(10));
如何使用整数参数值大于X的Mockito来模拟方法调用?如何模拟一个大于X的整数参数的方法调用
我想编写这样的事:
doReturn("FooBar").when(persons).getPersons(Mockito.gt(10));
使用的Mockito的Hamcrest匹配器。所有Mockitos参数匹配器都使用这些匹配器以便于使用和类型安全的方式匹配提供的参数。
Mockito还提供了使用Hamcrest的任何匹配器实现或自定义Matcher
实现的方法argThat(Matcher)
。对于所有原始类型,还有专门的版本intThat(Matcher)
。
所以,知道,我重写方法调用的嘲弄:
doReturn("FooBar")
.when(persons)
.getPersons(Mockito.intThat(Matchers.greaterThan(10));
+1用于查找执行该工作的预先存在的匹配器。 –
通过扩展ArgumentMatcher(名为IntGreaterThan,例如)写Hamcrest Matcher<Integer>
,然后用
doReturn("FooBar").when(persons).getPersons(intThat(MyMatchers.isGreatherThan(10)));
其中MyMatchers.isGreaterThan(10)
创建一个新的您的IntGreatherThan匹配器实例。
如果静态导入MyMatchers.isGreaterThan
,它成为
doReturn("FooBar").when(persons).getPersons(intThat(isGreatherThan(10)));
+1。但是,难道你不能用现有的哈克雷斯特更大的匹配器而不是写自己的? –
如果这样的匹配器存在,那么确定您可以使用它。 –
是的,有这样一个匹配器。我只是想和你一样。 – Oliver
2的Mockito
Hamcrest不再是匹配器的Mockito的依赖。
但是,我发现MockitoHamcrest
似乎提供与Hamcrest匹配器的互操作性。应用到有问题的示例中,它看起来像这样:
doReturn("FooBar").when(persons)
.getPersons(MockitoHamcrest.intThat(Matchers.greaterThan(10)));
这应该现在工作,gt是匹配器 –