Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 需要使用MvcContrib.TestHelper';s ShouldMapTo()泛型扩展方法_Asp.net Mvc_Unit Testing_Asp.net Mvc Routing_Mvccontrib Testhelper - Fatal编程技术网

Asp.net mvc 需要使用MvcContrib.TestHelper';s ShouldMapTo()泛型扩展方法

Asp.net mvc 需要使用MvcContrib.TestHelper';s ShouldMapTo()泛型扩展方法,asp.net-mvc,unit-testing,asp.net-mvc-routing,mvccontrib-testhelper,Asp.net Mvc,Unit Testing,Asp.net Mvc Routing,Mvccontrib Testhelper,我正在尝试使用MvcContrib.TestHelper ShouldMapTo()扩展方法对我的路由进行单元测试,但我的测试失败,并显示以下错误消息: failed: Method MvcContrib.TestHelper.RouteTestingExtensions.ShouldMapTo: type argument 'ReviewController' violates the constraint of type parameter 'TController'. 但是ReviewC

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

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());
}
[测试]
公共无效应\u映射\u审查\u控制器\u路线\u正确()
{
MVCAPApplication.RegisterRoutes(RouteTable.Routes);
“~/评论”
.ShouldMapTo(c=>c.Index());
}
以下是ReviewController类的声明:

public class ReviewController : SmartController<Review, ReviewForm>
{
...
}
public abstract class SmartController<TModel, TForm> : Controller
    where TModel : new()
{
...
}
公共类审阅控制器:SmartController
{
...
}
以及SmartController类的声明:

public class ReviewController : SmartController<Review, ReviewForm>
{
...
}
public abstract class SmartController<TModel, TForm> : Controller
    where TModel : new()
{
...
}
公共抽象类SmartController:Controller
其中TModel:new()
{
...
}
只是为了好玩,我尝试从继承层次结构中删除SmartController,以便ReviewController直接从Controller继承,但仍然抛出错误


有人知道我做错了什么吗?

我在MVC2和MVC2构建的MvcContrib中使用了这种方法,一切都很好。我发现这个问题:


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

谢谢。这就成功了。我必须更新我的Rhino.Mocks程序集才能与新的MvcContrib版本配合使用,但是有了它,我的测试现在通过了,所以我可以继续了。我真的很感激。如果您将MVC 2 MvcContrib程序集与MVC 3解决方案一起使用,也会遇到同样的情况。更新到最新的MvcContrib版本,一切正常。