Gunakan Moq untuk mensimulasikan HttpContext dalam ASP.NET MVC
Apabila cuba mensimulasikan HttpContext semasa menguji, anda mungkin menghadapi ralat yang menunjukkan bahawa sifat HttpContext ialah baca sahaja. Artikel ini akan memberikan penyelesaian kepada masalah ini dan menerangkan cara menggunakan Moq untuk mengejek HttpContext dan kebergantungannya.
Mengatasi isu baca sahaja
Dalam kelas HomeController, sifat HttpContext sememangnya baca sahaja. Walau bagaimanapun, adalah mungkin untuk menetapkan sifat ControllerContext, yang mengandungi HttpContext sebagai subproperty.
<code>controller.ControllerContext = new ControllerContext( context.Object, new RouteData(), controller );</code>
Contoh
Kod berikut menunjukkan cara menetapkan HttpContext yang dipermainkan menggunakan Moq:
<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.ControllerContext = new ControllerContext( context.Object, new RouteData(), controller ); ... }</httprequestbase></httpcontextbase></code>
Lebih banyak sumber
Untuk butiran lanjut tentang mengejek RequestContext dan HttpContext, sila lihat sumber berikut:
Atas ialah kandungan terperinci Bagaimana untuk mengejek HttpContext dalam ASP.NET MVC Menggunakan Moq?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!