Я использую модуль маршрутизации restful для asp.net mvc и очень доволен этим. Но я не могу получить одну вещь. Например, у меня было действие контроллера как это:
public ActionResult Index()
{
if (Request.IsAjaxRequest())
return PartialView();
return View();
}
И не было проблем с написанием спецификации, подобной этой:
[Subject(typeof(LotsController))]
public class When_Index_called
{
static LotsController controller;
static ActionResult actionResult;
Establish context = () => {
controller = mocker.Create<LotsController>();
controller.ControllerContext = Contexts.Controller.Default;
};
Because of = () => actionResult = controller.Index();
It should_render_view = () => actionResult.AssertViewRendered().ForViewWithDefaultName();
Но с использованием rest, я хочу использовать метод Index, подобный этому:
public ActionResult Index()
{
return RespondTo(format => {
format.Html = () => {
if (Request.IsAjaxRequest())
return PartialView();
return View();
};
format.Json = () => Json(new { });
});
}
Убедитесь, что предыдущая спецификация не выполнена, поскольку результат действия не относится к типу ViewResult, а к типу FormatResult. FormatResult переопределяет метод ExecuteResult, который возвращает void. Как мне выполнить модульное тестирование такого случая, если я хочу проверить типы результатов действий и данные внутри FormatResult?