Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk mengejek HttpContext dengan betul dalam Ujian Unit MVC ASP.NET dengan Moq?

Bagaimana untuk mengejek HttpContext dengan betul dalam Ujian Unit MVC ASP.NET dengan Moq?

Linda Hamilton
Lepaskan: 2025-01-11 20:46:15
asal
288 orang telah melayarinya

How to Properly Mock HttpContext in ASP.NET MVC Unit Tests with Moq?

Mengejek HttpContext dalam Ujian Unit MVC ASP.NET dengan Moq

Pengujian unit pengawal ASP.NET MVC selalunya memerlukan ejekan HttpContext untuk mengasingkan kod anda daripada kebergantungan pelayan web. Moq, rangka kerja mengejek yang kuat, menyediakan penyelesaian yang teguh untuk mensimulasikan HttpContext dan sifatnya.

Cabaran:

Mengejek secara langsung HttpContext dengan Moq memberikan perangkap biasa:

<code class="language-csharp">[TestMethod]
public void Home_Message_Display_Unknown_User_when_cookie_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();

    // Error: HttpContext is read-only.
    controller.HttpContext = context.Object; 
    ...
}</code>
Salin selepas log masuk

Percubaan untuk menetapkan HttpContext yang dipermainkan terus kepada harta HttpContext pengawal gagal kerana ia adalah baca sahaja.

Penyelesaian:

Pendekatan yang betul melibatkan penetapan harta ControllerContext sebaliknya. ControllerContext mewarisi daripada HttpContext, menyediakan titik akses yang diperlukan:

<code class="language-csharp">controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);</code>
Salin selepas log masuk

Bacaan Lanjut:

Untuk maklumat lebih terperinci tentang mengejek HttpContext dan RequestContext dengan Moq, rujuk sumber ini:

Atas ialah kandungan terperinci Bagaimana untuk mengejek HttpContext dengan betul dalam Ujian Unit MVC ASP.NET 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