我有一个方法会被调用两次,我想捕捉第二个方法调用的参数.

以下是我try 过的:

ArgumentCaptor<Foo> firstFooCaptor = ArgumentCaptor.forClass(Foo.class);
ArgumentCaptor<Foo> secondFooCaptor = ArgumentCaptor.forClass(Foo.class);
verify(mockBar).doSomething(firstFooCaptor.capture());
verify(mockBar).doSomething(secondFooCaptor.capture());
// then do some assertions on secondFooCaptor.getValue()

但是我得到了一个TooManyActualInvocations例外,因为Mockito认为doSomething应该只调用一次.

如何验证第二次调用doSomething的参数?

推荐答案

我想应该是的

verify(mockBar, times(2)).doSomething(...)

mockito javadoc个样本中的样本:

ArgumentCaptor<Person> peopleCaptor = ArgumentCaptor.forClass(Person.class);
verify(mock, times(2)).doSomething(peopleCaptor.capture());

List<Person> capturedPeople = peopleCaptor.getAllValues();
assertEquals("John", capturedPeople.get(0).getName());
assertEquals("Jane", capturedPeople.get(1).getName());

Java相关问答推荐

Spring Boot找不到Mapper bean

为什么接口中的主函数而不是类中的主函数在Java 17中编译和运行没有问题?

Java WireMock定义存根在Cucumber并行执行的多线程测试中失败

使用JdkClientHttpRequestFactory通过Spring RestClient和Wiemock读取时达到EOF

SpringBoot+Java 17@Valid未验证POJO

如何从错误通道回复网关,使其不会挂起

MimeMessage emlMessage=new MimeMessage(Session,emlInputStream);抛出InvocationTargetException

如何在一行中使用Dijkstra中的Java Stream

带有Health Check的Spring Boot BuildPack打破了本机映像构建过程

舰队运行配置Maven版本

当b是一个字节并且在Java中值为-1时,为什么b>;>;>;1总是等于-1?

AbstractList保证溢出到其他方法

不能在 map 上移除折线

Bash数组的单引号元素并使用空格连接

如何修复Spring Boot应用程序中的RestDocumentationGenerationException:java.io.FileNotFoundException:/curl-request.adoc(只读文件系统)?

为什么Spring要更改Java版本配置以及如何正确设置?

谷歌应用引擎本地服务器赢得';t在eclipse上运行

Java返回生成器的实现

javax.crypto-密码对象-提供者服务是如何工作的?

";重复键的值提示唯一约束«;livre_genre_pkey»";例外