Rhino Mock, получить TempData после RedirectToRoute

Как получить TempData после RedirectToAction в тесте Rhino Mock?

Код

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 ?!
 }

person Yauhen Kavalenka    schedule 11.11.2013    source источник
comment
Я предполагаю, что это контроллер MVC? Разве это не просто случай доступа к свойству TempData и проверки?   -  person Chris Mantle    schedule 12.11.2013
comment
Да, конечно. Я думаю, что контроллер Tempdata должен быть смоделирован, прежде чем я смогу работать с тестовым NUnit.   -  person Yauhen Kavalenka    schedule 13.11.2013


Ответы (1)


Свойства и методы базовых классов являются частью производного класса и, следовательно, частью тестируемой системы (SUT). Вам нужно только имитировать зависимости тестируемой системы — другие классы, с которыми взаимодействует тестируемая система.

В этой ситуации вам не нужен макет, потому что TempData является свойством ControllerBase, от которого получен ваш контроллер:

using (var controller = new TestController(x => x.Register(service)))
{
    var result = (RedirectToRouteResult)controller.Action1();
    Assert.AreEqual("Bar", controller.TempData["Foo"]);
}
person Chris Mantle    schedule 13.11.2013