我正在尝试使用MvcContrib.TestHelper ShouldMapTo <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直接从Controller继承,但仍然会抛出错误。
有谁知道我做错了什么?
答案 0 :(得分:4)
我将此方法与MVC 2和MvcContrib一起使用MVC 2构建,一切正常。我发现了这个问题:
http://groups.google.com/group/mvccontrib-discuss/browse_thread/thread/356203db654fa4bd?pli=1
您是否在MVC 2中使用旧的MvcContrib程序集(使用MVC1构建)?如果是,您应该下载MVC 2的MvcContrib二进制文件或来源。