通过返回基本调试ViewResult来测试MVC应用程序

时间:2013-09-05 19:39:39

标签: c# asp.net-mvc asp.net-mvc-4

我对C#有点经验,但我对MVC4来说是全新的,并且正在努力解决一些简单问题。我试图在现有应用程序中进行一些编辑,从控制器开始,我想通过进行基本测试来确保操作正确运行。

我想在控制器中有一个动作返回一个ViewResult,里面有一些我可以操作的基本内容(只是一个“Hello World”或类似的东西),只是为了确保动作返回一个在我开始给它更复杂的功能之前,ViewResult正确。

目前我的控制器中的操作如下:

    public ActionResult Test()
    {
        var v = new ViewResult();
        v.ViewData["Message"] = "HELLO THERE";
        return v;
    }

显然你可以看到我在努力学习基础知识。我已经看了一些教程,但是那些似乎专注于如何在Visual Studio中创建一个新的View 项目的上下文中创建一个View,这不是我想要的。我想将一些基本内容放入操作中的视图对象中,这样我就可以测试我是否正确调用了操作,而不是制作包含视图数据的实际文件。

任何见解总是受到赞赏。

4 个答案:

答案 0 :(得分:1)

您可以轻松地执行此操作...只需创建一个与操作同名的空视图即可完成

public ActionResult Test()
    {

        ViewData["Message"] = "HELLO THERE";
        return view();
    }

创建没有任何内容的测试视图

答案 1 :(得分:1)

如果您想在没有视图的情况下执行某些操作,则无法返回加载视图的ActionResult(在您的情况下,一个名为'Test'的视图未指定)。

你可以创建一个无效控制器(至少我认为 - 我从来没有这样做过) - 但为什么不创建一个只打印消息的简单视图:

public ActionResult Test()
{
    ViewData["Message"] = "HELLO THERE";
    return View("DebugView");
}

然后DebugView.cshtml只是:

@ViewData["Message"]

测试以上并且有效。正如其他人指出的那样,你可以归还其他东西。

答案 2 :(得分:1)

按照惯例,您的意图是拥有一个从每个控制器操作返回的视图文件。如果您想要使用调试视图,只需创建一个临时视图文件并将该字符串传递给视图。你可以返回其他数据类型,比如Json,只返回数据(减去一个视图),试试这个。

public ActionResult SomeActionMethod() {
    return Content("hello world!");
}

虽然我们讨论这个问题,但如果你在控制器周围编写单元测试可能会更好。理想情况下,视图不应修改您的数据,只应具有基本视图逻辑并显示您的视图模型。单元测试将允许您查看控制器操作返回的内容,而不必创建调试视图或触摸任何与视图相关的内容。

答案 3 :(得分:0)

你可以通过mvc返回任何东西,而不仅仅是行动结果

    public string Test()
    {
        return "Hello World!!!";
    }