โปรดทราบว่าคุณยังสามารถใช้คลาสInOrderเพื่อตรวจสอบว่ามีการเรียกใช้เมธอดต่าง ๆ ตามลำดับในการจำลองครั้งเดียวไม่ใช่เพียงแค่ใน mocks สองรายการขึ้นไป
สมมติว่าฉันมีสองชั้นFoo
และBar
:
public class Foo {
public void first() {}
public void second() {}
}
public class Bar {
public void firstThenSecond(Foo foo) {
foo.first();
foo.second();
}
}
แล้วฉันสามารถเพิ่มระดับทดสอบเพื่อทดสอบว่าBar
's firstThenSecond()
วิธีจริงเรียกfirst()
แล้วsecond()
และไม่ได้แล้วsecond()
first()
ดูรหัสทดสอบต่อไปนี้:
public class BarTest {
@Test
public void testFirstThenSecond() {
Bar bar = new Bar();
Foo mockFoo = Mockito.mock(Foo.class);
bar.firstThenSecond(mockFoo);
InOrder orderVerifier = Mockito.inOrder(mockFoo);
// These lines will PASS
orderVerifier.verify(mockFoo).first();
orderVerifier.verify(mockFoo).second();
// These lines will FAIL
// orderVerifier.verify(mockFoo).second();
// orderVerifier.verify(mockFoo).first();
}
}