java - Mockito 验证是否跳过多个调用?

标签 java mocking mockito verify

我想检查传递给方法的参数...但检查必须在第三次调用该方法时完成。

我认为答案可能是去:

verify( myMock, times( 2 ) ).myMethod( any() );
verify( myMock ).myMethod( paramIWant ); 

...但它在第一行失败:

But was 5 times. Undesired invocation:

...因为在我感兴趣的电话之后确实还有 2 个电话。

最佳答案

为此使用参数捕获器。您可以在验证时传入捕获器,然后取出作为参数传递给此方法的所有值并检查您想要的值。

ArgumentCaptor<SomeClass> myCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(myMock,times(5)).myMethod(myCaptor.capture());

List<SomeClass> paramsPassed = myCaptor.getAllValues();
assertEquals(paramIWant, paramsPassed.get(2));

关于java - Mockito 验证是否跳过多个调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42234779/

相关文章:

java - 如何使用 Mockito 来验证一组重载方法是否被调用?

java.sql.SQLException : Parameter number X is not an OUT parameter 异常

java - 使用spring连接数据库时出错

mocking - Cakephp 1.3 模拟认证

c# - FakeItEasy - 伪造 setter 行为来存储值,然后存储 getter

java - 捕获先前的值以验证模拟对象

java - Spring Security 身份验证失败 : error org. hibernate.HibernateException:未找到当前线程的 session

java - 是否将此私有(private)枚举设为静态?

c# - 模拟 MVC Controller 中的内在依赖

java - 模拟方法,但它调用实际方法