วิธียืนยันวิธีเรียกสองครั้งด้วยการตรวจสอบ mockito ()


307

ฉันต้องการตรวจสอบว่าวิธีการใดเรียกอย่างน้อยหนึ่งครั้งผ่านการตรวจสอบ mockito ฉันใช้การตรวจสอบและมันบ่นเช่นนี้:

org.mockito.exceptions.verification.TooManyActualInvocations: 
Wanted 1 time:
But was 2 times. Undesired invocation:

คำตอบ:


519

ใช้ VerificationMode ที่เหมาะสม:

import static org.mockito.Mockito.atLeast;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;

verify(mockObject, atLeast(2)).someMethod("was called at least twice");
verify(mockObject, times(3)).someMethod("was called exactly three times");

22
คุณสามารถใช้Mockito.times(...)แทนVerificationModeFactory.times(...)การนำเข้าแบบคงที่ได้
Wim Deblauwe

26
import static org.mockito.Mockito.times;. โดยทั่วไปการนำเข้าแพคเกจด้วย "ภายใน" ในพวกเขา ( import static org.mockito.internal.verification.VerificationModeFactory.times;) จะหมดกำลังใจ
Roger

มีวิธีเขียนอีกครั้งหนึ่ง (1)?
Glenn Bech

1
@GlennBech คุณสามารถละเว้นได้โดยปริยาย ค่าเริ่มต้นverify(mockObject).someMethod("")จะค้นหาการโต้ตอบ 1 รายการ (ไม่มากไม่น้อยไปกว่านี้) หากคุณต้องการวิธีการอย่างน้อยหนึ่งการร้องขอคุณสามารถใช้ตัวatLeastOnce()ระบุ
nbrooks

1
@Roger ฉันเห็นด้วยกับคุณสำหรับการเริ่มต้น TDD ฝึกเช่นฉันนำเข้าคงทำให้ฉันสับสนมากขึ้นเกี่ยวกับการจดจำวิธีการหรือกรอบที่ใช้ (Mockito, Espresso หรือเพียงแค่การทดสอบหน่วยปกติ)
คิดรหัสสองครั้งเมื่อ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.