Apabila berurusan dengan kelas yang mengandungi pelbagai kaedah statik, cabaran timbul dalam mengejek kaedah statik tunggal sambil memastikannya mengembalikan objek. Berikut ialah penyelesaian terperinci menggunakan PowerMockito:
Dayakan Ejek Statik:
Mulakan dengan mendayakan ejekan statik untuk kelas yang anda ingin ubah suai menggunakan PowerMockito. mockStatic(Class.class). Ini membolehkan anda menyediakan gelagat khusus untuk kaedah statik dalam kelas tersebut.
Stubbing Kaedah:
Untuk menentukan gelagat sasaran kaedah statik, gunakan sintaks when-thenReturn. Contohnya:
when(Class.m1(param1, param2)).thenReturn(objectToReturn);
Ini menentukan bahawa apabila m1 dipanggil dengan parameter yang diberikan, ia harus mengembalikan objek yang disediakan.
Mengelakkan Nilai Pulangan Lalai :
Secara lalai, PowerMockito menyediakan nilai lalainya sendiri untuk statik tidak berstub kaedah. Untuk mengatasi perkara ini dan mengembalikan objek tersuai, adalah penting untuk menggunakan versi 1-argumen mockStatic tanpa menyatakan strategi lalai.
Contoh Pelaksanaan:
Pertimbangkan coretan kod berikut:
PowerMockito.mockStatic(Static.class); when(Static.m1("param1", "param2")).thenReturn(new Object());
Kod ini mengejek kaedah statik m1 dalam kelas Statik dan mengetuknya untuk mengembalikan tika baharu objek.
Menggunakan Kaedah Mocked:
Setelah kaedah statik diejek dan ditikam, anda boleh menggunakannya seperti biasa. Panggilan kaedah akan dipintas oleh PowerMockito dan mengembalikan objek yang ditentukan.
Ingat, perbezaan utama di sini ialah menggunakan versi 1-argumen mockStatic untuk mendayakan ejekan statik tanpa menyatakan strategi lalai , dan kemudian menggunakan sintaks when-thenReturn untuk stub satu kaedah statik untuk mengembalikan objek.
Atas ialah kandungan terperinci Bagaimana untuk mengejek Kaedah Statik Tunggal Mengembalikan Objek Menggunakan PowerMockito?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!