سؤال

لدي 2 طرق مسجلة على النحو التالي:

routes.MapRoute("GetAnEmail", "{controller}", new { controller = "Home", action = "GetAnEmail" }, new { httpMethod = new HttpMethodConstraint("POST") })
routes.MapRoute("Home", "{controller}/{action}", new { controller = "Home", action = "Index" })

لدي اختبار وحدة صالحة لمراقب المنزل كما يلي:

 [Test]
 public void CanVerifyRouteMaps()
     {
         "~/".Route().ShouldMapTo<HomeController>(x => x.Index());
     }

أعرف أن getanemail يعمل، ولكن كيف اختبار وحدة واحدة مسارا منشورا؟

هل كانت مفيدة؟

المحلول

إجابة Gratzy قريبة ولكن كل ما يظهر لي هو كيفية إجراء وظيفة من خلال التعليمات البرمجية.

أعتقد أن الحل لم يكن في ستيفن فالثرز بلوق وظيفة. وبعد أنا حقا لاختبار قيود طريقي هنا، وهو مفتاح. ستيفن يخلق httpcontext مزيف في مثاله. سأحاول ذلك مع السخريات وحيد القرن، وبمجرد أن يكون لدي مثال على العمل، سينشر مرة أخرى. إذا قام شخص ما بالفعل بهذا مع Rhino Mock أو موك، فيرجى نشر ما يصل أيضا.

نصائح أخرى

تحتاج إلى محاكاة منشور في اختبار الوحدة الخاص بك.

System.Net.WebRequest req = System.Net.WebRequest.Create("your url");

req.ContentType = "text/xml";
req.Method = "POST";

byte[] bytes = System.Text.Encoding.ASCII.GetBytes("Your Data");
req.ContentLength = bytes.Length;
os = req.GetRequestStream();
os.Write(bytes, 0, bytes.Length); 


System.Net.WebResponse resp = req.GetResponse();
if (resp == null) return;
System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());

str responsecontent = sr.ReadToEnd().Trim();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top