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!