بحاجة إلى مساعدة في الخطأ باستخدام طريقة التمديد العام mvccontrib.testhelper
-
24-09-2019 - |
سؤال
أحاول وحدة اختبار طرقاتي باستخدام mvccontrib.testhelper يجب أن<TController>
() طريقة التمديد ، لكن اختباراتي تفشل مع رسالة الخطأ التالية:
failed: Method MvcContrib.TestHelper.RouteTestingExtensions.ShouldMapTo:
type argument 'ReviewController' violates the constraint of type parameter
'TController'.
لكن ReviewController تلبي القيد. يرث من فصل يسمى SmartController ، والذي يرث من System.Web.MvC.Controller. وبالتالي أنا في حيرة بشأن كيفية حل هذا الخطأ.
ها هو اختبار الوحدة الخاص بي:
[Test]
public void Should_map_review_controller_routes_correctly()
{
MvcApplication.RegisterRoutes(RouteTable.Routes);
"~/reviews"
.ShouldMapTo<ReviewController>(c => c.Index());
}
فيما يلي إعلان فئة ReviewController:
public class ReviewController : SmartController<Review, ReviewForm>
{
...
}
وإعلان فئة SmartController:
public abstract class SmartController<TModel, TForm> : Controller
where TModel : new()
{
...
}
فقط بالنسبة للابتسامات ، حاولت إزالة SmartController من التسلسل الهرمي للميراث بحيث يرث ReviewController مباشرة من وحدة التحكم ، ولكن لا يزال يتم طرح الخطأ.
هل يعرف أحد ما أفعله خطأ؟
المحلول
لقد استخدمت هذه الطريقة مع MVC 2 و MVCContrib المصممة مع MVC 2 وكل شيء يعمل بشكل جيد. لقد وجدت هذه المشكلة:
http://groups.google.com/group/mvccontrib-discuss/browse_thread/thread/356203db654fa4bd؟pli=1
هل تستخدم مجموعة MVCContrib القديمة (التي تم تصميمها مع MVC1) مع MVC 2؟ إذا كانت الإجابة بنعم ، يجب عليك تنزيل ثنائيات أو مصادر MVCContrib لـ MVC 2.