c# - 如何从 .NET MVC Controller 测试 JsonResult

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

正在测试的 Controller Action :

    [AuthorizeUser]
    [HttpPost]
    [ValidateJsonAntiForgeryToken]
    public ActionResult EventDetails(int eventId)
    {
        string details = this._eventDataProvider.GetById(eventId).Comments;

        if (string.IsNullOrEmpty(details))
            details = "This location has not entered any comments or further details for this event.";

        return Json(new
        {
            details = details
        });
    }

Controller 的测试代码:想知道我需要做什么来测试从 Controller 返回的 Json:

    [TestMethod]
    public void DetailsAreReturned()
    {
        // Arrange
        eventsController = new EventsController(eventDataProvider.Object, playerEventDataProvider.Object, userDataProvider.Object,
                                                tokenAuthent.Object, dataContext.Object, customerLocationDataProvider.Object);

        eventDataProvider.Setup(x => x.GetById(1)).Returns(new Event() { Comments = "test" });

        // Act
        JsonResult result = (JsonResult) eventsController.EventDetails(1);

        // Assert
        Assert.IsNotNull(result.Data);

        Assert.AreEqual(??, result);
    }

最佳答案

我必须首先感谢这篇文章:How do I iterate over the properties of an anonymous object in C#?

var result = new JsonResult{ Data = new {details = "This location has not entered any comments or further details for this event."}};

var det = result.Data.GetType().GetProperty("details", BindingFlags.Instance | BindingFlags.Public);

var dataVal = det.GetValue(result.Data, null);

希望这对您有所帮助,或者至少给您一个跳跃点。

关于c# - 如何从 .NET MVC Controller 测试 JsonResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17757314/

相关文章:

asp.net - MVC 3 在 IEnumerable 模型 View 中编辑数据

c# - "routes.LowercaseUrls = true;"不起作用?

jquery - 具有动态添加字段的客户端验证

ios - 我无法在 UnitTest 中获取 BundleVersionKey、BundleIdentiferKey

java - 单元测试 WorkManager 时周期性工作未达到运行状态

C#; NullReferenceException 未处理;值被重置为 0

c# - 如何在 C# 中将日期与 'T' 转换为字符串/从字符串转换

c# - 如何将整个字符串与正则表达式匹配?

c# - 从使用 Excel-DNA 构建的 Excel .XLL 文件中解压内容

Java:非法参数异常