我有一个在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);
}
答案 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(以及可能的相关程序集)的版本。