Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/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 为什么此ViewResult无法通过MSpecMVC';s应该是视图断言吗?_Asp.net Mvc_Asp.net Mvc 2_Mspec - Fatal编程技术网

Asp.net mvc 为什么此ViewResult无法通过MSpecMVC';s应该是视图断言吗?

Asp.net mvc 为什么此ViewResult无法通过MSpecMVC';s应该是视图断言吗?,asp.net-mvc,asp.net-mvc-2,mspec,Asp.net Mvc,Asp.net Mvc 2,Mspec,我一直在学习MSpec和一些相关的基础设施。我使用的是最新版本的MSpec和ASP.NETMVC2,我没有使用J.P Boodhoo的库 当我运行这个测试时 [Subject(typeof(HomeController))] public class when_the_home_controller_is_told_to_display_the_default_view { static string key; static string message; static

我一直在学习MSpec和一些相关的基础设施。我使用的是最新版本的MSpec和ASP.NETMVC2,我没有使用J.P Boodhoo的库

当我运行这个测试时

[Subject(typeof(HomeController))]
public class when_the_home_controller_is_told_to_display_the_default_view
{
    static string key;
    static string message;
    static ActionResult result;
    static HomeController home_controller;

    Establish context = () =>
    {
        key = "Message";
        message = "Welcome to ASP.NET MVC!";
        home_controller = new HomeController();
    };

    Because of = () => result = home_controller.Index();

    It should_return_the_home_view = () => result.ShouldBeAView().And().ViewName.ShouldBeEmpty();
}
我得到以下错误

应返回主视图:失败
应为System.Web.Mvc.ViewResult类型,但为System.Web.Mvc.ViewResult类型

当我单步遍历代码时,它会在这个方法的断言中出现(在MSpecMVC的
actionresulttextensions.cs
文件中)

publicstaticviewsresult和ShouldBeAView(此ActionResult ActionResult)
{
actionResult.ShouldBeOfType();
返回新的ViewResult(actionResult作为ViewResult);
}

尽管如此,我可以确认
actionResult
属于
System.Web.Mvc.ViewResult
类型。我在另一台计算机上使用了相同的工具来运行其他测试,但我没有遇到当前的问题。

詹姆斯·布鲁姆的MSpec.MVC扩展使用MSpec v0.2。由于您使用的是Mspec v0.3,因此存在不匹配。您应该获取源代码并更新解决方案以使用MSpec v0.3


确保Mspec.MVC扩展以与ASP.NET MVC解决方案相同的.NET Framwork版本为目标(例如,两者都是4.0)。这还取决于您使用的MSpec版本。MSpec v0.3是根据
.NET 3.5
.NET 4.0

编译的。嗨,塞尔吉,我确实得到了詹姆斯的源代码,并对MSpec的最新版本进行了替换,即0.3。我将尽力确保我是根据4.0编译的。谢谢你的意见。嘿,塞尔吉,我最后做的就是按照你说的做。我确保我是根据.NET framework的正确版本编译的,这次它起了作用。:)这不仅仅是为了构建正确的.NET Framework版本,更重要的是,Machine.Specifications.Mvc引用了ASP.NET Mvc 1.0,我有一个MVC3项目,即使在我将所有内容都更改为.NET 4.0之后也出现了相同的错误-直到我发现James的库很难引用MVC1,在我用MVC3替换它并重新编译之后,它开始工作了!您是否会向James的存储库提供包含修复的拉取请求?或者,因为他已经三年没有更新了,如果他不理你,你会发布你自己的软件包吗?@AnthonyMastrean:嗨,安东尼,恐怕我已经没有源代码了,很长时间没有与MSpec合作了。
public static ViewResultAnd ShouldBeAView(this ActionResult actionResult)
{
    actionResult.ShouldBeOfType<ViewResult>();
    return new ViewResultAnd(actionResult as ViewResult);
}