سؤال

أحاول العثور على بعض المعلومات واضحة حول هذا، لكنني لم أتمكن من ذلك - إما ما وجدته في غامضة لي لفهم ما يجري، أو محددة للغاية بالنسبة للشيء الخطأ، على سبيل المثال برنامج تعليمي وجدته للوحدة اختبار Autleizeattribute. (بديل ثالث هو بالطبع أن أدرك أنني أقرأ المعلومات التي أبحث عنها ... في هذه الحالة ما زلت بحاجة إلى مساعدة، لأنني أغبي: P)

أود أن أكون قادرا على اختبار شيئين:

  1. أن ActionFilter معطى يتم تطبيقه على إجراء (للتأكد من أن الإجراء يلبي المتطلبات)
  2. أن ActionFilter معين يفعل ما يفترض القيام به.

وأنا جاهل. هل يمكن لأي شخص يدفعني في الاتجاه الصحيح حول ما أحتاج إليه بالفعل؟ ما الذي يجب أن يتضمن ترتيبي، فعله وأقسام تأكيد الاختبارات؟


بعض التفاصيل، إذا لم أكن واضحا بما فيه الكفاية:

انا املك CustomValidationFilter من المفترض أن تحقق ما إذا كانت قيم نموذجان مقدمة هي نفسها، وإضافة ModelStateError ان لم. أريد التحقق من إضافة الخطأ مع رسالة الخطأ الصحيحة إذا كانت القيم ليست هي نفسها، وأن الخطأ هو الخطأ ليس وأضاف إذا كانت القيم نكون متساو (وغير فارغ).

لدي أيضا Write العمل على GuestbookController. وبعد أريد التحقق من تطبيق المرشح على هذا الإجراء.

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

المحلول

باستخدام التفكير في الاختبار الخاص بك.

   var method = typeof(MyController).GetMethod("MyMethod");
   var attribute = method.GetCustomAttributes(typeof(CustomValidationFilter),false);
                         .Cast<CustomValidationFilter>()
                         .SingleOrDefault();

   Assert.IsNotNull( attribute );
   Assert.AreEqual( "value", atttribute.SomeProperty );

إنشاء اختبار وحدة للطريقة في صفك. يسخر من المرشح باستخدام البيانات المناسبة والتحقق من أن أي متغيرات من المفترض أن يتم تعيين الطريقة، في الواقع ما تتوقع أن يكون عليه.

 public void AttributeTest()
 {
     var httpContext = MockRepository.GenerateMock<HttpContextBase>();
     var controller = new FakeController();
     controller.controllerContext = new ControllerContext( httpContext, new RouteData(), controller );
     ...

     attribute.OnActionExecuting( filterContext );

     Assert...

 }

نصائح أخرى

إليك منشور مدونات يصف كيفية تمديد وحجز اختبار مرشح تفويض مخصص. تفاصيل بلوق نشر كل من مخاوفك، وهي كيفية اختبار أن ActionFilter معطى يتم تطبيقه على إجراء وكذلك كيفية اختبار أن ActionFilter يفعل ما يفترض القيام به.

http://blog.geniar.com/index.php/2009/05/aspnet-mvc-testing-a-custom-authorize-filters/

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