سؤال

في طلبي لدي نموذج مخصص نموذجي قمت بتعيينه على DefaultBinder في Global.asax:

 ModelBinders.Binders.DefaultBinder = new XLDataAnnotationsModelBinder();

عند إجراء اختبارات وحدة التحكم في وحدات التحكم، أحتاج إلى التأكد من أن وحدة التحكم تستخدم Binder النموذج المخصص ولكني لا أعرف كيفية القيام بذلك.

يختبر بلدي يشبه هذا:

 [Test]
 public void Details_Post_Action_Fails_To_Change_Email_Address_With_Duplicate()
 {
     // Setup
     var controller = new AccountController();
     controller.SetFakeControllerContext();

     var param = Customer.Load(30005);
     param.EmailAddress = "foo@bar.com";

     // Test
     var result = controller.Details(param);

     // Assert
     Assert.IsTrue(result is ViewResult);  // will be ViewResult if failed....
     Assert.IsFalse(((ViewResult)result).ViewData.ModelState.IsValid);
 }

مع هذه الوحدة اختبار وحدة التحكم ينتهي باستخدام DefaultModelbinder. ما الذي يمكنني إضافته في هذا الاختبار لضمان استخدام وحدة التحكم Binder النموذج المخصص؟

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

المحلول

قدم سكوت هانزيلمان وظيفة مدونة ذات صلة بهذا منذ فترة:

تقسيم DateTime - اختبار الوحدة ASP.NET MVC مخصص نموذج المجلدات

الجزء الذي من شأنه أن يهتم أنك في أسفل المنشور تحت "اختبار موثق النموذج المخصص". في الأساس، تقوم بإنصاف ModelBindingContextext، ثم قم بإنشاء BrowsBinder و BIND للاتصال () على ModelBinder يمر في ModelBindingContext الذي قمت بإنشائه (وسياق وحدة التحكم إذا لزم الأمر).

فيما يلي سؤال آخر بحيث يحتوي أيضا على المعلومات التي تحتاجها (حتى لو كنت لا تستخدم موك):

كيفية اختبار الوحدة مخصصات مخصصة باستخدام موك؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top