0

如何在 Rhino Mock 测试中 RedirectToAction 后获取 TempData?

代码

public ActionResult Action1() {
    TempData["Foo"] = "Bar";
    return RedirectToAction("Action2");
}
public ActionResult Action2() {
    return View();
}

测试

 using (var controller = new TestController(x => x.Register(service))){
    var result = (RedirectToRouteResult)controller.Action1();

    // How to get TempData value there ?!
 }
4

1 回答 1

1

基类的属性和方法是派生类的一部分,因此是被测系统 (SUT) 的一部分。您只需要模拟被测系统的依赖关系- 被测系统与之交互的其他类。

在这种情况下,您不需要模拟,因为TempData它是 的属性ControllerBase,您的控制器派生自该属性:

using (var controller = new TestController(x => x.Register(service)))
{
    var result = (RedirectToRouteResult)controller.Action1();
    Assert.AreEqual("Bar", controller.TempData["Foo"]);
}
于 2013-11-13T13:09:35.163 回答