Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengejek Kaedah Sambungan dengan Berkesan dengan Moq?

Bagaimanakah Saya Boleh Mengejek Kaedah Sambungan dengan Berkesan dengan Moq?

Barbara Streisand
Lepaskan: 2025-01-20 02:07:14
asal
860 orang telah melayarinya

How Can I Mock Extension Methods Effectively with Moq?

Kaedah sambungan mengejek menggunakan Moq: alternatif

Apabila menguji kod yang bergantung pada kaedah sambungan, adalah penting untuk mengekalkan kestabilan ujian terhadap kemungkinan kegagalan masa depan kaedah ini. Walaupun kefungsian Moq tidak meluas secara langsung kepada kaedah statik mengatasi, penyelesaian wujud.

Kaedah alternatif

Kaedah sambungan adalah kaedah statik dan tidak boleh disimulasikan secara langsung oleh Moq. Sebaliknya, anda boleh mengasingkan pelaksanaan kaedah lanjutan dengan memanfaatkan kelas konkrit dan kaedah statiknya.

Pertimbangkan contoh berikut:

<code class="language-c#">public static class ExtensionClass
{
    public static int GetValue(this SomeType obj) => obj.Id;
}

public class SomeType
{
    public int Id { get; set; }
}</code>
Salin selepas log masuk

Pelaksanaan ujian

Untuk membuat olok-olok yang tidak memanggil kaedah sambungan, rujuk kelas statik secara langsung:

<code class="language-c#">var concreteClassMock = new Mock<ExtensionClass>();
concreteClassMock.Setup(c => c.GetValue(It.IsAny<SomeType>())).Returns(5);</code>
Salin selepas log masuk

Dengan menyasarkan kaedah statik kelas konkrit, anda boleh mensimulasikan gelagat kaedah sambungan dengan berkesan tanpa bergantung secara langsung pada kaedah sambungan itu sendiri. Ini memastikan bahawa kegagalan ujian timbul hanya daripada kelas yang diuji dan bukan daripada kemungkinan kegagalan masa depan kaedah sambungan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek Kaedah Sambungan dengan Berkesan dengan Moq?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan