Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk mengejek HttpContext.Current dalam Permulaan Kelas Asas untuk Ujian Unit MVC ASP.NET?

Bagaimana untuk mengejek HttpContext.Current dalam Permulaan Kelas Asas untuk Ujian Unit MVC ASP.NET?

Susan Sarandon
Lepaskan: 2025-01-17 02:56:11
asal
330 orang telah melayarinya

How to Mock HttpContext.Current in Base Class Initialization for ASP.NET MVC Unit Tests?

Mengatasi HttpContext.Ejekan Semasa dalam Permulaan Kelas Asas untuk Ujian Unit MVC ASP.NET

Pengujian unit aplikasi ASP.NET MVC selalunya memerlukan ejekan HttpContext.Current untuk mensimulasikan permintaan dan respons pengguna. Masalah biasa timbul apabila kelas ujian mewarisi daripada kelas asas yang menggunakan HttpContext.Current dalam permulaannya. Sekadar mengejek konteks untuk pengawal itu sendiri tidak mencukupi.

Contoh yang disediakan menunjukkan mengejek HttpContext untuk pengawal menggunakan FakeControllerContext dan SetFakeControllerContext. Walau bagaimanapun, jika kaedah Init kelas asas mengakses HttpContext.Current, ini perlu ditangani secara langsung. Untuk memastikan ejekan yang konsisten, kita juga mesti mengejek HttpContext.Current dalam permulaan ujian.

Mengejek HttpContext.Current Dengan Berkesan

Kami boleh mengejek kelas System.Web.HttpContext dengan berkesan dengan menggantikan sifat IPrincipal dan IIdentitynya. Coretan kod berikut menggambarkan ini:

<code class="language-csharp">HttpContext.Current = new HttpContext(
    new HttpRequest("", "http://tempuri.org", ""),
    new HttpResponse(new StringWriter())
);

// Simulate a logged-in user
HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity("username"),
    new string[0]
);

// Simulate a logged-out user
HttpContext.Current.User = new GenericPrincipal(
    new GenericIdentity(String.Empty),
    new string[0]
);</code>
Salin selepas log masuk

Dengan melaksanakan strategi mengejek ini dalam kaedah permulaan ujian, sebelum memanggil kaedah Init kelas asas, kami memastikan HttpContext.Current diejek dengan betul, membenarkan ujian mensimulasikan interaksi pengguna dengan tepat dan mengakses HttpContext seperti yang diperlukan . Pendekatan ini menjamin gelagat yang konsisten merentas kedua-dua pengawal dan kelas asas semasa pelaksanaan ujian.

Atas ialah kandungan terperinci Bagaimana untuk mengejek HttpContext.Current dalam Permulaan Kelas Asas untuk Ujian Unit MVC ASP.NET?. 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