Menguji Respons Tidak Tentu dalam Mockito
Apabila menguji kod tak segerak yang melibatkan respons tidak tentu, seperti yang diperoleh daripada ExecutorCompletionService, adalah perlu untuk mengejek tingkah laku kaedah tidak tentu. Dalam senario ini, kaedah mungkin mengembalikan objek yang berbeza apabila seruan berikutnya dengan argumen yang sama.
Untuk mencapai ini dalam Mockito, gunakan kaedah thenReturn dengan berbilang argumen. Sintaksnya ialah:
when(method-call).thenReturn(value1, value2, value3);
Anda boleh menentukan seberapa banyak hujah yang diperlukan, semua jenis yang sama. Nilai pertama akan dikembalikan pada panggilan kaedah pertama, yang kedua pada panggilan kedua, dan seterusnya. Apabila semua nilai telah dikembalikan, nilai terakhir akan terus dikembalikan untuk panggilan berikutnya.
Sebagai contoh, kod berikut menunjukkan cara untuk menguji kaedah yang memanggil ExecutorCompletionService untuk mendapatkan semula tugasan:
// Arrange ExecutorCompletionService<T> completionService = mock(ExecutorCompletionService.class); when(completionService.take()).thenReturn(task1, task2, task3); // Act for (int i = 0; i < 3; i++) { T task = completionService.take().get(); // Assert assertEquals(expectedTasks[i], task); }
Dalam contoh ini, kaedah ambil pada mulanya akan mengembalikan tugas1, kemudian tugas2, dan akhirnya tugas3 untuk tiga panggilan pertama. Selepas itu, nilai yang sama (tugas3) akan dikembalikan untuk semua panggilan berikutnya. Ini membolehkan ujian respons tidak tentu sambil mengesahkan bahawa hasilnya kekal malar.
Atas ialah kandungan terperinci Bagaimana Mengejek Tingkah Laku Kaedah Tidak Tentu dalam Mockito?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!