如何在 Rhino Mock 测试中重定向到操作后获取 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 ?!
}
基
类的属性和方法是派生类的一部分,因此是受测系统 (SUT) 的一部分。您只需要模拟被测系统的依赖关系 - 被测系统与之交互的其他类。
在这种情况下,您不需要模拟,因为 TempData
是 ControllerBase
的属性,您的控制器派生自:
using (var controller = new TestController(x => x.Register(service)))
{
var result = (RedirectToRouteResult)controller.Action1();
Assert.AreEqual("Bar", controller.TempData["Foo"]);
}