首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >单元测试ASP.NET MVC重定向

单元测试ASP.NET MVC重定向
EN

Stack Overflow用户
提问于 2008-09-12 08:38:29
回答 4查看 8K关注 0票数 17

如何对MVC重定向进行单元测试?

代码语言:javascript
复制
public ActionResult Create(Product product)
{
    _productTask.Save(product);
    return RedirectToAction("Success");   
}

public ActionResult Success()
{ 
     return View();
}

Ayende's方法仍然是最好的方法吗,预览5:

代码语言:javascript
复制
 public static void RenderView(this Controller self, string action) 
 {
    typeof(Controller).GetMethod("RenderView").Invoke(self,new object[] { action} ); 
 }

不得不这样做似乎很奇怪,特别是MVC团队已经说过,他们正在编写可测试的框架。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-09-12 12:29:03

代码语言:javascript
复制
[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");
    }
}
票数 29
EN

Stack Overflow用户

发布于 2016-01-26 23:27:03

这适用于使用NUnit的ASP.NET MVC5:

代码语言:javascript
复制
    [Test]
    public void ShouldRedirectToSuccessAction()
    {
        var controller = new RedirectController();
        var result = controller.Index() as RedirectToRouteResult;

        Assert.That(result.RouteValues["action"], Is.EqualTo("success"));
    }

如果您想测试您是否正在重定向到不同的控制器(比如NewController),则断言将是:

代码语言:javascript
复制
Assert.That(result.RouteValues["controller"], Is.EqualTo("New"));
票数 0
EN

Stack Overflow用户

发布于 2008-09-12 12:09:53

您可以对返回的ActionResult进行断言,您需要将其强制转换为适当的类型,但它确实允许您使用基于状态的测试。在网上搜索应该会找到一些有用的链接,不过这里是just one

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档