我是MVC和TDD的新手,所以如果这是一个愚蠢的问题请饶恕我:)
我想要做的是,我创建了一个SignOn控制器,我只想为该控制器编写一个Test。事情是SignOn控制器在内部做Response.Redirect,如果它是一个正确的请求,它工作正常,但是当我运行我的测试它失败,因为没有响应对象。
那么如何测试我的SignOn控制器,它在内部重定向?
答案 0 :(得分:2)
如果要进行重定向,则应使用actionresult:Redirect("url")
。在测试中,您可以检查actionresult是否为RedirectResult类型和/或是否具有正确的属性值。
答案 1 :(得分:0)
我不是TDD人,但有些东西告诉我HttpContextBase是你的朋友:http://msdn.microsoft.com/en-us/library/system.web.httpcontextbase.aspx
这是一个很好的资源。
希望这有帮助。
答案 2 :(得分:0)
可用于测试控制器/演示者内部导航代码的模式之一是ApplicationController。
请查看以下说明PEAA: Application Controller
我们已在ASP.NET应用程序中实现了应用程序控制器。
ApplicationController.Navigate(view: "LoginScreen", argument: userId);
ApplicationController检查哪些NavigationWorkflow已注册,并将导航转移到正确的类。
在单元测试中,您可以使用类似rhino mocks的东西模拟NavigationWorkflow并将其传递给ApplicationController。然后,您可以检查是否在工作流程中调用了正确的导航方法。
因此,您不必调用Response.Redirect,而是将导航职责委派给可以用单元测试替换的单独类。
答案 3 :(得分:0)
您的操作方法应返回RedirectResult。如果您确切知道URL应该是什么,则可以测试Url
属性。