首页 > 解决方案 > Mockito ArgumentCaptor:如何捕获类和对象

问题描述

我一直在尝试捕获某些类型,但找不到干净的解决方案。我懂了:

@Captor
private ArgumentCaptor<T extends DTO> targetMapperCaptor;

我将这个 Captor 用于使用 2 种参数的映射器;一个实例或一个clazz。

正如它所声明的,它只捕获那些扩展 DTO 的对象,用于捕获类:

@Captor
private ArgumentCaptor<Class> targetMapperCaptor;

举个例子,在实现中有这个代码:

mock.map(MyObject.class);
mock.map(new MyObject());

并在测试中有这个:

when(mock, times(2)).map(targetMapperCaptor.capture());

总是会抛出一个 TooLittleActualInvocations (想要 2 但得到 1)。如果我们删除 times(2),在 targetMapperCaptor.getAllValues() 中只有与类型匹配的值。

有什么方法可以声明 ArgumentCaptor 来捕获任何参数?

我也尝试过失败:

private ArgumentCaptor<?> targetMapperCaptor;
private ArgumentCaptor targetMapperCaptor;

标签: javatestingjunitmockito

解决方案


推荐阅读