单元测试ASP.NET MVC重定向
时间:2020-03-05 18:52:04 来源:igfitidea点击:
如何对MVC重定向进行单元测试?
public ActionResult Create(Product product) { _productTask.Save(product); return RedirectToAction("Success"); } public ActionResult Success() { return View(); }
在预览5中,Ayende的方法是否仍是最佳方法?
public static void RenderView(this Controller self, string action) { typeof(Controller).GetMethod("RenderView").Invoke(self,new object[] { action} ); }
这样做似乎有些奇怪,尤其是当MVC团队表示他们正在编写可测试的框架时。
解决方案
回答
我们可以对返回的ActionResult进行断言,我们需要将其强制转换为适当的类型,但它确实允许我们使用基于状态的测试。在网络上进行搜索应该会找到一些有用的链接,尽管这里只是一个。
回答
[TestFixture] public class RedirectTester { [Test] public void Should_redirect_to_success_action() { var controller = new RedirectController(); var result = controller.Index() as RedirectToRouteResult; Assert.That(result, Is.Not.Null); Assert.That(result.Values["action"], Is.EqualTo("success")); } } public class RedirectController : Controller { public ActionResult Index() { return RedirectToAction("success"); } }
回答
我们可以使用Mvc.Contrib.TestHelper来提供用于测试重定向的断言。看看http://kbochevski.blogspot.com/2010/06/unit-testing-mvcnet.html和代码示例。这可能会有所帮助。