Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengejek Kaedah Sambungan dengan Moq Apabila Ia Tidak Menyokongnya Secara Langsung?

Bagaimanakah Saya Boleh Mengejek Kaedah Sambungan dengan Moq Apabila Ia Tidak Menyokongnya Secara Langsung?

DDD
Lepaskan: 2025-01-20 02:16:09
asal
253 orang telah melayarinya

How Can I Mock Extension Methods with Moq When It Doesn't Directly Support Them?

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

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

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!

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