使用MvcContrib.TestHelper的ShouldMapTo()通用扩展方法需要有关错误的帮助

Bre*_*ent 9 asp.net-mvc unit-testing asp.net-mvc-routing mvccontrib-testhelper

我正在尝试使用MvcContrib.TestHelper ShouldMapTo <TController>()扩展方法对我的路由进行单元测试,但我的测试失败并显示以下错误消息:

failed: Method MvcContrib.TestHelper.RouteTestingExtensions.ShouldMapTo:
type argument 'ReviewController' violates the constraint of type parameter
'TController'.
Run Code Online (Sandbox Code Playgroud)

但是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());
}
Run Code Online (Sandbox Code Playgroud)

以下是ReviewController类的声明:

public class ReviewController : SmartController<Review, ReviewForm>
{
...
}
Run Code Online (Sandbox Code Playgroud)

并且SmartController类的声明:

public abstract class SmartController<TModel, TForm> : Controller
    where TModel : new()
{
...
}
Run Code Online (Sandbox Code Playgroud)

只是为了咧嘴笑,我尝试从继承层次结构中删除SmartController,以便ReviewController直接从Controller继承,但仍然会抛出错误.

有谁知道我做错了什么?

Luk*_*Led 4

我将此方法与 MVC 2 和使用 MVC 2 构建的 MvcContrib 一起使用,一切正常。我发现这个问题:

http://groups.google.com/group/mvccontrib-discuss/browse_thread/thread/356203db654fa4bd?pli=1

您是否将旧的 MvcContrib 程序集(使用 MVC1 构建)与 MVC 2 一起使用?如果是,您应该下载 MvcContrib 二进制文件或 MVC 2 的源代码。