CodeGym/Java Course/Modul 3/Skenario populer untuk bekerja dengan Mockito

Skenario populer untuk bekerja dengan Mockito

Level 4, Pelajaran 5
Tersedia

6.1 Mengejek metode statis mockStatic()

Dan satu poin penting lagi adalah mengejek dan memverifikasi metode statis. "Apa yang salah dengan itu?" Anda bertanya. Ya, statis, tetapi metodenya sama. Dan Anda akan salah.

Ingat di mana kita mulai belajar tentang objek tiruan? Karena objek ini dibuat secara artifisial melalui DynamicProxy. Dan metode statis tidak terikat pada objek apa pun dan DynamicProxytidak mungkin mencegat panggilan ke objek tersebut melalui . Itu saja.

Tetapi pencipta Mockito juga dapat mengelak di sini - mereka menulis pemuat kelas mereka sendiri dan dengan bantuannya mereka dapat mengganti kelas dengan cepat. Pekerjaan yang besar dan sulit, tetapi mereka masih berhasil melakukannya.

Anda perlu menambahkan perpustakaan tambahan ke pom.xml:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-inline</artifactId>
    <version>4.2.0</version>
    <scope>test</scope>
</dependency>

Inilah cara bekerja jika Anda perlu mengejek metode statis.

1 Buat objek kelas tiruan khusus:

MockedStatic<ClassName>managerObject = Mockito.mockStatic(ClassName.class);

2 Tambahkan aturan operasi ke objek ini:

Untuk objek aturan ini perlu berpegang teguh dengan cara lain.

managerObject.when(ClassName::method name).thenReturn(result);

3 Pastikan untuk membungkus penggunaan objek initry-with-resources sehingga objek tersebut segera dihapus dan Mockito dapat menghapus aturan yang terkait dengannya.

Contoh:

@Test
void givenStaticMethodWithNoArgs () {
    try (MockedStatic< StaticUtils> utilities =  Mockito.mockStatic( StaticUtils.class)) {
        // add rule
         utilities.when(StaticUtils::name).thenReturn("Hello");

        // check if the rule works
        assertEquals("Hello", StaticUtils.name());
    }
}

Tidak seindah dengan anotasi @Mockdan @Spy, tapi sangat praktis. Sangat sulit untuk menulis pengujian ketika tidak mungkin meniru metode statis sederhana yang digunakan di dalam metode yang diuji.

Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar