阅读RouteValues字典的RedirectToRouteResult

问题描述:

我正在学习ASP MVC,因此是新的TDD和MVC框架。我在写模拟TestMethod时发现一个问题,用于测试Controller内部的Action,在其正文中使用“RedirectToAction”。阅读RouteValues字典的RedirectToRouteResult

编写testMethod以确保重定向的Action是正确的。我读过它可以检查RedirectToRouteResult.RouteValues,并获取“action”键的值。即使在调试(注视属性),我也能够正确地得到它。但@编译时测试显示异常Cannot apply Indexing with [] to an expression of type RedirectToRouteResult.RouteValues

以下是引用的代码片段:

public void TestHomeControllerContactRedirectRoute() 
     { 
      HomeController controller = new HomeController(); 
      ContactMessage message=new ContactMessage(){ 

       Email="[email protected]", 
       MessageBody="Some message here!!", 
       Name="Sun" 
      }; 

      RedirectToRouteResult resultRoute = controller.Contact(message) as RedirectToRouteResult; 

      if (resultRoute != null) 
      { 

       Assert.AreEqual("Contact", resultRoute.RouteValues["action"]); 
      } 
     } 
+1

这是怎么过的本地化?我在MVC4单元测试项目中遇到了同样的错误,并且接受的答案解决了它。也许增加更多标签? – 2014-10-02 14:31:59

+0

第二个Michael Paulukonis的评论。 – 2015-12-21 09:28:37

潜在缺少的System.Web

参考

来源:http://samritchie.net/2011/01/06/mvc-unit-testing-error/

+0

我是LOL @我自己。非常感谢! Betty – Sumeet 2012-02-22 08:58:10

+0

在单元测试项目中添加对“System.Web”的引用也解决了我在MVC4中遇到的问题。 – 2014-10-02 14:31:29