c# - 使用 ContentResult 类型对 C# 进行单元测试

标签 c# unit-testing asp.net-mvc-4

我在 mvc.net c# 中有 Controller 的这个 Action

public ContentResult GetVariableMapKml(string variableId, string sitesIds, string beginDate, string endDate, int limit)
    {
        Object resultData = null;
        // Prepare specific Json configuration
        var serializer = new JavaScriptSerializer();

        if (variableId != null && variableId != "")
        {
           ...
            if (valuesList != null)
            {
                resultData = new
                {
                    Values = valuesList,
                    Units = varUnits
                };
            }
            else
            {
               resultData = new
               {
                   Error = "Error at GetVariableMapKml() method: Null params"
               };
            }

        }

        var result = new ContentResult
        {
            Content = serializer.Serialize(resultData),
            ContentType = "application/json"
        };

        return result;
    }

我正在用 c 语言进行单元测试,我需要访问 ContentResult 的结果,以检查变量 Error 是否为 null。

[TestMethod]
    public void GetVariableMapKmlWrongParams()
    {
        FieldDataController controller = new FieldDataController();
        controller.ControllerContext =  
        TestUtils.CreateMockSessionControllerContext().Object as ControllerContext;

        //param null
        ContentResult result = controller.GetVariableMapKml(null, null, "05/05/2001", 
                                                            "02/10/2012", 100);
        Assert.IsNotNull("Error");
    }

如何访问错误内容并检查此内容是否为空?谢谢。

最佳答案

你可以这样做

    [TestMethod]
    public void GetVariableMapKmlWrongParams()
    {
        FieldDataController controller = new FieldDataController();
        controller.ControllerContext =
        TestUtils.CreateMockSessionControllerContext().Object as ControllerContext;

        //param null
        ContentResult result = controller.GetVariableMapKml(null, null, "05/05/2001",
                                                            "02/10/2012", 100);

        var returnedObject = (Dictionary<string, object>)(new JavaScriptSerializer()).DeserializeObject(result.Content);

        Assert.IsTrue(returnedObject.ContainsKey("Error"));

    }

您可以测试字典对象是否存在键及其值

关于c# - 使用 ContentResult 类型对 C# 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17409715/

相关文章:

c# - 如何更改我的 C++ 代码以用作 C# 中的 DLL?

unit-testing - 如何对 Kotlin 挂起函数进行单元测试

unit-testing - SugarORM + Android Studio +单元测试

asp.net-mvc-4 - 为什么_Layout.cshtml默认放置在~/Views/Shared文件夹中?

javascript - 在 Kendo Ui Grid 弹出窗口中更改按钮文本

c# - 一个类轮,如果呼吁采取行动

c# - 如何使用范围打印出反向数组?

c# - 使用 CheckBoxListFor Extension 获取 "Value cannot be null"异常

c# - 如何获取 "friendly"操作系统版本名称?

unit-testing - Grails:具有域类的单元测试 Controller 方法