我正在尝试编写一个测试来验证可以接受两个不同参数的相同方法名称的调用。我最初尝试的代码片段:
ArgumentCaptor<Label> labelCaptor = ArgumentCaptor.forClass(Label.class);
Mockito.verify(fakeSheet, Mockito.times(4)).addCell(labelCaptor.capture());
ArgumentCaptor<Number> numberCaptor = ArgumentCaptor.forClass(Number.class);
Mockito.verify(fakeSheet, Mockito.times(2)).addCell(numberCaptor.capture());
然而,Mockito 抱怨 addCell 在第一次验证时运行了 6 次。所以,我尝试了这个:
ArgumentCaptor<Label> labelCaptor = ArgumentCaptor.forClass(Label.class);
Mockito.verify(fakeSheet, Mockito.times(6)).addCell(labelCaptor.capture());
ArgumentCaptor<Number> numberCaptor = ArgumentCaptor.forClass(Number.class);
Mockito.verify(fakeSheet, Mockito.times(6)).addCell(numberCaptor.capture());
哪个运行,但在两个 ArgumentCaptor 中给了我所有 6 个参数调用,将我期望的所有 6 个对象的信息存储到两个 ArgumentCaptor 实例中。
这感觉非常错误,我可以用它写一个测试,但我的捕获者没有区分这两个类的事实让人感觉很脏。有没有办法让 Mockito 区分两者?