بحاجة إلى مساعدة في الخطأ باستخدام طريقة التمديد العام mvccontrib.testhelper

StackOverflow https://stackoverflow.com/questions/2389833

سؤال

أحاول وحدة اختبار طرقاتي باستخدام 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.

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