สมมติว่าวิธีการต่อไปนี้เพื่อทดสอบ:
public boolean doSomething(SomeClass arg);
เอกสาร Mockito บอกว่าคุณไม่ควรใช้ captor ด้วยวิธีนี้:
when(someObject.doSomething(argumentCaptor.capture())).thenReturn(true);
assertThat(argumentCaptor.getValue(), equalTo(expected));
เนื่องจากคุณสามารถใช้ตัวจับคู่ระหว่างการขัดถู:
when(someObject.doSomething(eq(expected))).thenReturn(true);
แต่การตรวจสอบเป็นเรื่องที่แตกต่าง หากการทดสอบของคุณต้องการตรวจสอบให้แน่ใจว่าวิธีการนี้ถูกเรียกด้วยอาร์กิวเมนต์ที่เฉพาะเจาะจงใช้ArgumentCaptor
และนี่คือกรณีที่ได้รับการออกแบบ:
ArgumentCaptor<SomeClass> argumentCaptor = ArgumentCaptor.forClass(SomeClass.class);
verify(someObject).doSomething(argumentCaptor.capture());
assertThat(argumentCaptor.getValue(), equalTo(expected));