首页 > 解决方案 > 通用列表的 ArgumentCaptor 始终返回一个空列表

问题描述

当尝试使用 ArgumentCaptor 捕获 ArrayList 参数时,结果对象始终是一个空列表。

我正在使用 @Captor 注释来创建我的 ArgumentCaptor,但它仍然会导致返回一个空列表。

 @RunWith(MockitoJUnitRunner.class)
    public class Test{

        @Mock
        private Service service;

        @Captor
        private ArgumentCaptor<ArrayList<SomeType>> secondCaptor;

        @Before
        public void init(){
            MockitoAnnotations.initMocks(this);
        }

        @Test 
        public void shouldDoStuffWithListValues(){

        ArgumentCaptor<SomeType> captor = ArgumentCaptor.forClass(SomeType.class);

        //...

        verify(service).doStuff(captor.capture(), secondCaptor.capture()));

        SomeType type = captor.getValue();
        List<SomeType> someTypeList = secondCaptor.getValue();

        //this assert is fine
        Assert.assertTrue(type != null);

        //whereas; this assert always fails, despite the call containing a value
        Assert.assertTrue(someTypeList.size()>0);

        }
    }

标签: mockito

解决方案


推荐阅读