Mock HttpContext.Semasa dalam ujian unit
Apabila unit menguji aplikasi ASP.NET MVC, anda perlu mengejek HttpContext.Current
yang dikembalikan oleh panggilan atribut HttpContext.Current
. Sifat ini mengembalikan tika System.Web.HttpContext
yang tidak melanjutkan System.Web.HttpContextBase
(kelas yang digunakan untuk mengejek).
HttpContext.Current and HttpContextBase
Pengenalan HttpContextBase
adalah untuk menyelesaikan masalah yang HttpContext
sukar untuk disimulasikan. Walau bagaimanapun, tiada hubungan antara kedua-dua kelas ini, HttpContextWrapper
digunakan sebagai penyesuai di antara mereka.
HttpContext olok-olok untuk akses dikongsi
Untuk mensimulasikan HttpContext
supaya ia dikongsi antara pengawal dan mana-mana perpustakaan yang dipanggil dalam kaedah TestInitialize
, anda boleh menggunakan kod berikut:
<code class="language-csharp">HttpContext.Current = new HttpContext( new HttpRequest("", "http://tempuri.org", ""), new HttpResponse(new StringWriter()) );</code>
Tetapkan prinsipal pengguna
Untuk menyediakan pengguna log masuk, gunakan kod berikut:
<code class="language-csharp">HttpContext.Current.User = new GenericPrincipal( new GenericIdentity("username"), new string[0] );</code>
Tetapkan pengguna sebagai tidak log masuk
Untuk menyamar sebagai pengguna yang tidak disahkan, gunakan:
<code class="language-csharp">HttpContext.Current.User = new GenericPrincipal( new GenericIdentity(String.Empty), new string[0] );</code>
Dengan mengubah suai HttpContext.Current
dengan cara ini, ia boleh disimulasikan sepanjang persediaan ujian, memastikan tingkah laku yang konsisten pengawal dan mana-mana perpustakaan bergantung.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengejek HttpContext.Current untuk Ujian Unit ASP.NET MVC yang Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!