สิ่งนี้สามารถทำได้หากคุณใช้ Mockito2 ด้วยคุณลักษณะการฟักตัวใหม่ที่รองรับการเยาะเย้ยของคลาสและวิธีการขั้นสุดท้าย
ประเด็นสำคัญที่ควรทราบ:
1. สร้างไฟล์อย่างง่ายด้วยชื่อ“ org.mockito.plugins.MockMaker” และวางไว้ในโฟลเดอร์ชื่อ“ mockito-extensions” โฟลเดอร์นี้ควรมีอยู่ใน classpath
2. เนื้อหาของไฟล์ที่สร้างขึ้นข้างต้นควรเป็นบรรทัดเดียวตามที่ระบุด้านล่าง:
mock-maker-inline
จำเป็นต้องใช้สองขั้นตอนข้างต้นเพื่อเปิดใช้งานกลไกการขยาย mockito และใช้คุณสมบัติการเลือกใช้นี้
ชั้นเรียนตัวอย่างมีดังนี้: -
FinalClass.java
public final class FinalClass {
public final String hello(){
System.out.println("Final class says Hello!!!");
return "0";
}
}
Foo.java
public class Foo {
public String executeFinal(FinalClass finalClass){
return finalClass.hello();
}
}
FooTest.java
public class FooTest {
@Test
public void testFinalClass(){
// Instantiate the class under test.
Foo foo = new Foo();
// Instantiate the external dependency
FinalClass realFinalClass = new FinalClass();
// Create mock object for the final class.
FinalClass mockedFinalClass = mock(FinalClass.class);
// Provide stub for mocked object.
when(mockedFinalClass.hello()).thenReturn("1");
// assert
assertEquals("0", foo.executeFinal(realFinalClass));
assertEquals("1", foo.executeFinal(mockedFinalClass));
}
}
หวังว่ามันจะช่วย
ปัจจุบันบทความสมบูรณ์ที่นี่เยาะเย้ยที่ unmockable