Rumah > Java > javaTutorial > Bagaimanakah Saya Boleh Mengejek Kaedah Secara Selektif dalam Mockito untuk Mengejek Separa?

Bagaimanakah Saya Boleh Mengejek Kaedah Secara Selektif dalam Mockito untuk Mengejek Separa?

Patricia Arquette
Lepaskan: 2024-12-20 20:11:10
asal
915 orang telah melayarinya

How Can I Selectively Mock Methods in Mockito for Partial Mocking?

Gunakan Mockito untuk Mengejek Kaedah Terpilih

Mockito menawarkan fleksibiliti dalam mengejek kaedah tertentu dalam kelas. Dengan memanfaatkan olok-olok separa, pembangun boleh memilih kaedah untuk mengatasi sementara membiarkan yang lain utuh.

Sebagai contoh, pertimbangkan kelas Stok dengan kaedah getPrice(), getQuantity(), dan getValue(). Anda mungkin ingin mengejek dua kaedah pertama untuk nilai pulangannya tetapi biarkan getValue() mengekalkan tingkah laku asalnya.

Menggunakan olok-olok separa dalam Mockito, anda boleh mencapai ketepatan ini. Objek Stok dijadikan sebagai olok-olok, manakala jangkaan khusus ditetapkan untuk getPrice() dan getQuantity(). Berikut ialah contoh:

Stock stock = mock(Stock.class);
when(stock.getPrice()).thenReturn(100.00);
when(stock.getQuantity()).thenReturn(200);
Salin selepas log masuk

Dengan memanggil thenCallRealMethod() untuk getValue(), anda mengekalkan pelaksanaan sebenar:

when(stock.getValue()).thenCallRealMethod();
Salin selepas log masuk

Sebagai alternatif, pengintip boleh digunakan, di mana semua kaedah pada mulanya merujuk kepada pelaksanaan sebenar. Hanya kaedah yang ditikam secara eksplisit akan menerima pakai tingkah laku yang diubah. Berikut ialah pendekatan pengintip:

Stock stock = spy(Stock.class);
when(stock.getPrice()).thenReturn(100.00);
when(stock.getQuantity()).thenReturn(200);
Salin selepas log masuk

Perhatikan bahawa apabila menggunakan pengintip, adalah penting untuk mengelak daripada memanggil kaedah sebenar dalam kaedah stubbed.

Namun pilihan lain melibatkan bendera Mockito.CALLS_REAL_METHODS:

Stock MOCK_STOCK = Mockito.mock( Stock.class, CALLS_REAL_METHODS );
Salin selepas log masuk

Pendekatan ini mendelegasikan kaedah yang tidak terputus kepada kaedah sebenar mereka pelaksanaan.

Walau bagaimanapun, dalam contoh Saham yang diberikan, strategi mengejek separa ini mungkin masih gagal disebabkan oleh pergantungan getValue() pada kedua-dua harga dan kuantiti secara langsung, bukan semata-mata pada penerima mereka.

Selain itu, pertimbangkan mengelak secara terang-terangan ejekan apabila boleh:

Stock stock = new Stock(100.00, 200);
double value = stock.getValue();
assertEquals("Stock value not correct", 100.00*200, value, .00001);
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Kaedah Secara Selektif dalam Mockito untuk Mengejek Separa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan