Rumah >pembangunan bahagian belakang >C++ >Bagaimana Berkesan Mengejek HttpContext dalam Ujian Unit MVC ASP.NET Menggunakan Moq?

Bagaimana Berkesan Mengejek HttpContext dalam Ujian Unit MVC ASP.NET Menggunakan Moq?

Patricia Arquette
Patricia Arquetteasal
2025-01-11 20:41:42235semak imbas

How to Effectively Mock HttpContext in ASP.NET MVC Unit Tests Using Moq?

Gunakan Moq untuk mensimulasikan HttpContext dalam ASP.NET MVC

Apabila menguji pengawal ASP.NET MVC, mengejek HttpContext adalah penting untuk mengasingkan gelagat kod anda. Artikel ini akan menunjukkan cara untuk mencapai ini menggunakan rangka kerja mengejek Moq yang popular.

Katakan anda perlu mengejek HttpContext dalam kaedah ujian:

<code>[TestMethod]
public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist()
{
    var context = new Mock<HttpContextBase>();
    var request = new Mock<HttpRequestBase>();
    context
        .Setup(c => c.Request)
        .Returns(request.Object);
    HomeController controller = new HomeController();

    controller.HttpContext = context.Object; // 此处出错
}</code>

Dalam kod di atas, anda akan menghadapi ralat semasa cuba menetapkan controller.HttpContext kerana ini ialah sifat baca sahaja. Walau bagaimanapun, masalah ini boleh diselesaikan menggunakan atribut ControllerContext boleh ubah:

<code>controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);</code>

HttpContext boleh disimulasikan dengan berkesan dengan menetapkan atribut ControllerContext. Untuk mendapatkan maklumat lanjut dan contoh tentang mengejek RequestContext dan HttpContext, sila rujuk sumber berikut:

Atas ialah kandungan terperinci Bagaimana Berkesan Mengejek HttpContext dalam Ujian Unit MVC ASP.NET Menggunakan Moq?. 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