CodeGym/Kursus Java/Modul 3/Senario popular untuk bekerja dengan Mockito

Senario popular untuk bekerja dengan Mockito

Tahap, pelajaran
Tersedia

6.1 Mengejek kaedah statik mockStatic()

Dan satu lagi perkara penting ialah mengejek dan mengesahkan kaedah statik. "Apa yang salah dengan itu?" anda bertanya. Ya, statik, tetapi kaedah adalah sama. Dan anda akan salah.

Ingat di mana kita mula belajar tentang objek olok-olok? Oleh kerana objek ini dicipta secara buatan melalui DynamicProxy. Dan kaedah statik tidak terikat kepada mana-mana objek dan DynamicProxyadalah mustahil untuk memintas panggilan kepada mereka melalui . Itu sahaja.

Tetapi pencipta Mockito dapat mengelak di sini juga - mereka menulis pemuat kelas mereka sendiri dan dengan bantuannya mereka dapat menggantikan kelas dengan cepat. Satu kerja yang besar dan sukar, tetapi mereka masih berjaya melakukannya.

Anda perlu menambah perpustakaan tambahan kepada pom.xml:

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

Berikut ialah cara untuk bekerja jika anda perlu mengejek kaedah statik.

1 Buat objek kelas olok-olok khas:

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

2 Tambahkan peraturan operasi pada objek ini:

Kepada objek peraturan ini adalah perlu untuk berpaut dengan cara lain.

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

3 Pastikan anda membalut penggunaan objek initry-with-resources supaya objek itu dipadamkan serta-merta dan Mockito boleh mengosongkan peraturan yang berkaitan 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 secantik dengan anotasi @Mockdan @Spy, tetapi sangat praktikal. Sangat sukar untuk menulis ujian apabila mustahil untuk mengejek kaedah statik mudah yang digunakan dalam kaedah yang diuji.

Komen
  • Popular
  • Baru
  • Tua
Anda mesti log masuk untuk meninggalkan ulasan
Halaman ini tidak mempunyai sebarang ulasan lagi