Rumah  >  Artikel  >  Java  >  Bagaimana Mengejek Tingkah Laku Kaedah Tidak Tentu dalam Mockito?

Bagaimana Mengejek Tingkah Laku Kaedah Tidak Tentu dalam Mockito?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-28 04:30:02988semak imbas

How to Mock Nondeterministic Method Behaviors in Mockito?

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!

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