ASP.NET MVC3升级 - “尝试按方法[无论如何]访问方法System.Web.Mvc.Controller.View(...)失败”

时间:2011-07-14 19:00:04

标签: c# asp.net-mvc asp.net-mvc-3

我有一个在MVC2中运行良好的单元测试。测试只是定义控制器上的Action,必要的存根,并测试视图的名称。但是,在升级到MVC3之后,当我调用该方法时,我得到上面的错误。网站MVC3升级工作正常;我只是因为升级而导致这些单元测试失败。感谢。

这是我的行动:

public partial class GadgetController
{
    [SetterProperty]
    public IATCGadgetProxy ATCGadgetService { get; set; }

    public ActionResult LoadForums(bool popularOnly, bool myThreads, int itemCount)
    {
        var model = ATCGadgetService.LoadForums(popularOnly, myThreads, itemCount);

        return View("AskTheCommunity-Forums", model);
    }
}

这是测试。当它从Action返回视图时失败。

[TestMethod]
public void Test_Forums_Action_Type()
{
    GadgetController controller = new GadgetController();
    controller.ATCGadgetService = new ATCGadgetServiceStub();
    ViewResult result = controller.LoadForums(false, false, 10) as ViewResult;

    Assert.IsNotNull(result);
    Assert.AreEqual("AskTheCommunity-Forums", result.ViewName);
}

2 个答案:

答案 0 :(得分:4)

我知道这是一个旧线程,但我在MVC 5.2.3中遇到了同样的错误......但是使用了Xunit。最后,解决问题的方法并不重要。

首先,您必须确保将MVC添加到您的测试项目中。我通过NuGet添加了它:

  

安装包Microsoft.AspNet.Mvc -Version 5.2.3

或者您可以将版本更改为您正在使用的任何MVC版本。

然后,我仍然有错误。我刚发现App.config页面缺少信息。一旦我确定我有这些线,一切正常:

<?xml version="1.0" encoding="utf-8"?>
<configuration>

    <!-- Other config here -->

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

答案 1 :(得分:3)

让我疯狂升级项目到MVC 3的一件事是这些奇怪的,无法解释的错误。直到我认为并非所有项目都升级到MVC 3(在您的情况下 - 可能是测试项目)并保留在MVC 2中,这导致了一些非常奇怪的行为,如您描述的行为。请检查测试项目中的System.Web.Mvc(以及可能的相关程序集)的版本。