Модульное тестирование перенаправления ASP.NET MVC - PullRequest
17 голосов
/ 12 сентября 2008

Как выполнить модульное тестирование перенаправления MVC?

public ActionResult Create(Product product)
{
    _productTask.Save(product);
    return RedirectToAction("Success");   
}

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

Является ли подход Айенде все еще лучшим способом, с предварительным просмотром 5:

 public static void RenderView(this Controller self, string action) 
 {
    typeof(Controller).GetMethod("RenderView").Invoke(self,new object[] { action} ); 
 }

Кажется странным, что это нужно сделать, тем более что команда MVC заявила, что пишет среду для тестирования.

Ответы [ 4 ]

28 голосов
/ 12 сентября 2008
[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");
    }
}
0 голосов
/ 26 января 2016

Это работает для ASP.NET MVC 5 с использованием NUnit:

    [Test]
    public void ShouldRedirectToSuccessAction()
    {
        var controller = new RedirectController();
        var result = controller.Index() as RedirectToRouteResult;

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

Если вы хотите проверить, что вы перенаправляете на другой контроллер (например, NewController), утверждение будет:

Assert.That(result.RouteValues["controller"], Is.EqualTo("New"));
0 голосов
/ 17 июня 2010

вы можете использовать Mvc.Contrib.TestHelper, который предоставляет утверждения для тестирования перенаправлений. Взгляните на http://kbochevski.blogspot.com/2010/06/unit-testing-mvcnet.html и пример кода. Это может быть полезно.

0 голосов
/ 12 сентября 2008

Вы можете утверждать на возвращаемом ActionResult, вам нужно привести его к соответствующему типу, но он позволяет использовать тестирование на основе состояния. Поиск в Интернете должен найти несколько полезных ссылок, а вот только одна .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...