在这种情况下,我是否需要为每个参数编写一个捕获器,尽管我只需要捕获第一个参数?
durron597 的答案是正确的 — 如果你想捕获其中一个参数,则无需捕获所有参数。不过,有一点需要澄清:对 Mockito 匹配器的调用算作 Mockito 匹配器,在 Mockito 中,如果您对任何方法参数使用匹配器,则必须对所有参数使用匹配器。ArgumentCaptor.capture()
对于方法和 :yourMock.yourMethod(int, int, int)
ArgumentCaptor<Integer> intCaptor
/* good: */ verify(yourMock).yourMethod(2, 3, 4); // eq by default
/* same: */ verify(yourMock).yourMethod(eq(2), eq(3), eq(4));
/* BAD: */ verify(yourMock).yourMethod(intCaptor.capture(), 3, 4);
/* fixed: */ verify(yourMock).yourMethod(intCaptor.capture(), eq(3), eq(4));
这些也适用于:
verify(yourMock).yourMethod(intCaptor.capture(), eq(5), otherIntCaptor.capture());
verify(yourMock).yourMethod(intCaptor.capture(), anyInt(), gt(9000));