Rumah >Java >javaTutorial >Bagaimana Cara Mengejek Separa dalam Kelas Menggunakan Mockito?

Bagaimana Cara Mengejek Separa dalam Kelas Menggunakan Mockito?

DDD
DDDasal
2024-12-12 15:51:24390semak imbas

How to Partially Mock Methods in a Class Using Mockito?

Cara Mengejek Kaedah Khusus dalam Kelas Menggunakan Mockito

Dalam ujian perisian, mengejek membolehkan anda mensimulasikan tingkah laku kebergantungan atau kelas yang anda tidak mahu langsung. Mockito ialah rangka kerja mengejek Java yang membolehkan anda mengejek kaedah dan mengesahkan interaksi dengan kaedah tersebut.

Secara khususnya, anda mungkin menghadapi senario di mana anda ingin mengejek kaedah kelas tertentu sambil membiarkan yang lain tidak disentuh. Pendekatan ini dikenali sebagai separa mengejek. Begini cara anda boleh mencapainya menggunakan Mockito:

// Mock the Stock class with partial mocking
Stock stock = mock(Stock.class);

// Mock specific methods
when(stock.getPrice()).thenReturn(100.00);
when(stock.getQuantity()).thenReturn(200);

// Leave 'getValue()' unmocked
// It will execute the actual Stock.getValue() calculation
when(stock.getValue()).thenCallRealMethod();

Dengan cara ini, hanya kaedah getPrice() dan getQuantity() akan diejek, manakala getValue() akan melaksanakan kod asalnya.

Selain itu, anda boleh menggunakan hujah CALLS_REAL_METHODS dengan Mockito.mock():

Stock MOCK_STOCK = Mockito.mock(Stock.class, CALLS_REAL_METHODS);

Ini akan mewakilkan panggilan tanpa henti kepada pelaksanaan sebenar.

Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa dalam contoh anda, mengejek hanya getPrice() dan getQuantity() tidak akan berfungsi dengan betul kerana pelaksanaan getValue() bergantung pada nilai pulangan sebenar mereka. Sebaliknya, pertimbangkan untuk mengelakkan ejekan sama sekali:

// Without mocks
Stock stock = new Stock(100.00, 200);
double value = stock.getValue();

Atas ialah kandungan terperinci Bagaimana Cara Mengejek Separa dalam Kelas Menggunakan Mockito?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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