如何测试在MVC 2中设置的TempData是否存在重定向?

Nat*_*han 12 unit-testing asp.net-mvc-2

在尝试测试我的MVC 2控制器时,我很难测试TempData我在进行重定向时的结果.如果控制器操作的结果是a ViewResult,它可以正常工作,但是,在重定向中,它是RedirectToRouteResult.

所以我的测试是这样的:

var controller = new SubscriptionController(this.dataStorageMock.Object)
    {
        ControllerContext = MvcMockHelpers.GetControllerContextMock("POST")
    };

var actionResult = controller.Create(formCollection);
var redirectResult = (RedirectToRouteResult)actionResult;

// TODO: Need to ensure TempData contains a key "info".
Run Code Online (Sandbox Code Playgroud)

一种选择是执行以下操作:

Assert.That(controller.TempData.ContainsKey("info"));
Run Code Online (Sandbox Code Playgroud)

如果结果是a,ViewResult它可以像这样测试:

var viewResult = (ViewResult)actionResult;
Assert.That(viewResult.TempData.ContainsKey("info"));
Run Code Online (Sandbox Code Playgroud)

有没有办法测试RedirectToRouteResult与可测试的相同方式ViewResult

谢谢

Dar*_*rov 33

Assert.That(controller.TempData.ContainsKey("info")); 正是你所需要的.

  • controller.TempData [ "信息". (7认同)