Rumah >Java >javaTutorial >Bagaimana untuk mengejek Kaedah Statik Tunggal dan Mengembalikan Objek Tersuai Menggunakan PowerMock?
Apabila mengejek kaedah statik di Jawa, anda mungkin menghadapi keperluan untuk memilih kaedah tertentu dan mengembalikan objek tersuai. PowerMock menyediakan kefungsian yang diperlukan untuk mencapai ini.
Untuk mengejek kaedah statik, anda perlu mendayakan olok-olok statik untuk kelas sasaran menggunakan PowerMockito.mockStatic(). Walau bagaimanapun, strategi jawapan lalai yang diberikan kepada kaedah ini boleh membawa kepada ralat tidak padan taip jika kelas mengandungi berbilang kaedah statik dengan jenis pulangan yang berbeza.
Sebaliknya, anda harus menggunakan kaedah tersebut. -argument overload mockStatic() untuk mendayakan ejekan statik, kemudian gunakan PowerMockito.when() dan thenReturn() untuk menentukan tingkah laku yang diingini untuk individu kaedah. Ini membolehkan anda menentukan nilai pulangan tersuai untuk setiap kaedah stubbed.
Pertimbangkan kelas dengan dua kaedah statik, satu mengembalikan String dan satu lagi int:
class ClassWithStatics { public static String getString() { return "String"; } public static int getInt() { return 1; } }
Untuk stub kaedah getString() untuk mengembalikan "Hello!", anda akan melakukan berikut:
PowerMockito.mockStatic(ClassWithStatics.class); when(ClassWithStatics.getString()).thenReturn("Hello!"); System.out.println("String: " + ClassWithStatics.getString());
Perhatikan bahawa kaedah getInt() tidak distub secara eksplisit. Ia akan menggunakan gelagat lalai untuk mengembalikan 0.
Dengan menggunakan gabungan teknik ejekan dan stubbing statik yang betul, anda boleh secara selektif mengejek kaedah statik tunggal dan mengembalikan objek dalam PowerMock. Ini membolehkan anda menguji dan mengasingkan gelagat kaedah statik tertentu dalam kod Java anda.
Atas ialah kandungan terperinci Bagaimana untuk mengejek Kaedah Statik Tunggal dan Mengembalikan Objek Tersuai Menggunakan PowerMock?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!