Rumah >Java >javaTutorial >Bagaimana untuk Mengejek Kaedah Void dengan Berkesan dalam Mockito?

Bagaimana untuk Mengejek Kaedah Void dengan Berkesan dalam Mockito?

DDD
DDDasal
2024-12-07 10:59:11527semak imbas

How to Effectively Mock Void Methods in Mockito?

Kaedah Tidak Sah Mengejek dengan Mockito

Dalam corak Pemerhati, pemerhati lazimnya mentakrifkan kaedah dengan jenis pulangan tidak sah. Apabila cuba mengejek kaedah sedemikian menggunakan Mockito, anda mungkin menghadapi cabaran.

Cabaran: Olok-olok kaedah tanpa nilai pulangan tidak dicetuskan secara automatik. Akibatnya, penegasan yang berkaitan dengan perubahan keadaan atau pemanggilan kaedah mungkin gagal dalam ujian unit.

Penyelesaian:

Gunakan doThrow(), doAnswer(), Kaedah doNothing(), atau doReturn() daripada Mockito untuk memanipulasi kelakuan kaedah batal.

Sebagai contoh, untuk mencetuskan pengecualian apabila kaedah dipanggil:

Mockito.doThrow(new Exception()).when(instance).methodName();

Untuk menggabungkannya dengan yang berikutnya tindakan:

Mockito.doThrow(new Exception()).doNothing().when(instance).methodName();

Dalam contoh yang disediakan, mengejek kaedah setState boleh dicapai menggunakan kaedah doAnswer:

World mockWorld = mock(World.class); 
doAnswer(new Answer<Void>() {
    public Void answer(InvocationOnMock invocation) {
      Object[] args = invocation.getArguments();
      System.out.println("called with arguments: " + Arrays.toString(args));
      return null;
    }
}).when(mockWorld).setState(anyString());

Dengan teknik ini, anda boleh mengejek kaedah batal, menetapkan jangkaan, dan lakukan penegasan untuk mengesahkan tingkah laku mereka dalam ujian unit anda.

Atas ialah kandungan terperinci Bagaimana untuk Mengejek Kaedah Void dengan Berkesan dalam 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