Kaedah Sambungan Mengejek dalam Ujian Unit: Pendekatan Praktikal
Ujian unit selalunya memerlukan kaedah sambungan mengejek, tugas yang pada mulanya kelihatan bermasalah dengan Moq kerana kekurangan sokongan langsung. Ini berpunca daripada sifat kaedah sambungan: ia pada asasnya kaedah statik melanjutkan kelas sedia ada. Moq, bagaimanapun, mengejek kejadian objek, bukan kaedah statik.
Penyelesaian terletak pada pemahaman bahawa kaedah sambungan menambah kefungsian pada kelas. Oleh itu, daripada mengejek kaedah sambungan itu sendiri, kami mengejek kelas sasaran.
Mari kita periksa senario biasa:
public class SomeType { public int Id { get; set; } } // ... (Extension method definition elsewhere) ...
Contoh yang disediakan menunjukkan keperluan untuk mengejek FirstOrDefault
kaedah sambungan yang digunakan pada List<SomeType>
. Daripada mengejek FirstOrDefault
secara langsung, kami membuat olok-olok List<SomeType>
:
var listMock = new Mock<List<SomeType>>(); listMock.Setup(l => l.FirstOrDefault(st => st.Id == 5)) .Returns(new SomeType { Id = 5 });
Persediaan ini membolehkan kami mentakrifkan nilai pulangan kaedah sambungan FirstOrDefault
apabila dipanggil dengan predikat yang ditentukan. Kami mengawal tingkah laku secara tidak langsung, melalui olok-olok objek senarai.
Teknik ini secara berkesan memintas had Moq, membolehkan ujian unit komprehensif yang merangkumi senario yang melibatkan kaedah sambungan. Dengan memfokuskan pada mengejek objek yang dikendalikan oleh kaedah sambungan, kami mendapat kawalan ke atas kelakuannya dan mencapai liputan ujian yang mantap.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Kaedah Sambungan dengan Moq Apabila Ia Tidak Menyokongnya Secara Langsung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!