如何使用大于X的整数参数来模拟方法调用

Oli*_*ver 3 mocking mockito

如何使用大于X的整数参数值模拟Mockito的方法调用?

我想写这样的东西:

doReturn("FooBar").when(persons).getPersons(Mockito.gt(10));
Run Code Online (Sandbox Code Playgroud)

Oli*_*ver 10

Mockito使用Hamcrest的匹配器.所有Mockitos参数匹配器都使用这些匹配器以方便且类型安全的方式匹配提供的参数.

Mockito还提供了argThat(Matcher)使用Hamcrest或自定义Matcher实现的任何匹配器实现的方法.intThat(Matcher)所有原始类型都有专门的版本.

所以,知道了,我重写了方法调用的模拟:

doReturn("FooBar")
   .when(persons)
   .getPersons(Mockito.intThat(Matchers.greaterThan(10));
Run Code Online (Sandbox Code Playgroud)


Vas*_*kov 6

Mockito 2

Hamcrest不再是对Mockito匹配者的依赖.

但是,我发现MockitoHamcrest它似乎提供了与Hamcrest匹配器的互操作性.应用于相关示例,它看起来像这样:

doReturn("FooBar").when(persons)
        .getPersons(MockitoHamcrest.intThat(Matchers.greaterThan(10)));
Run Code Online (Sandbox Code Playgroud)


小智 5

使用AdditionalMatchers.gt:

import static org.mockito.Mockito.when;
import static org.mockito.ArgumentMatchers.*;
import static org.mockito.AdditionalMatchers.gt;
...
@Mock
private WalletService walletService;
...
@Before...
when(walletService.withdraw(eq(777), gt(1000), 
eq("USD"))).thenReturn(INSUFFICIENT_FUNDS);
...
@Test...
Run Code Online (Sandbox Code Playgroud)