gpt4 book ai didi

c# - 单元测试asp.net mvc restful routing FormatResult

转载 作者:行者123 更新时间:2023-11-30 12:50:43 25 4
gpt4 key购买 nike

我正在使用 restful routing module对于 asp.net mvc 并且非常满意。但我不能得到一件事。例如,我有一个这样的 Controller 操作:

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 本身会覆盖返回 void 的 ExecuteResult 方法。如果我想验证 FormatResult 中的操作结果类型和数据,我该如何对这种情况进行单元测试?

最佳答案

在 restful 路由的 future 版本中,这样的代码是可能的:

var formatResult = actionResult as FormatResult;
ActionResult result = formatResult.ExposeResult().Html();
result.ShouldBeOfType<ViewResult>();

关于c# - 单元测试asp.net mvc restful routing FormatResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8532885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com