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

Bagaimana untuk Mengejek Kaedah Void dengan Berkesan dalam Mockito?

DDD
Lepaskan: 2024-12-07 10:59:11
asal
526 orang telah melayarinya

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();
Salin selepas log masuk

Untuk menggabungkannya dengan yang berikutnya tindakan:

Mockito.doThrow(new Exception()).doNothing().when(instance).methodName();
Salin selepas log masuk

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());
Salin selepas log masuk

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan