加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何从.NET MVC控制器测试JsonResult

发布时间:2020-12-16 01:56:04 所属栏目:百科 来源:网络整理
导读:正在测试的控制器操作: [AuthorizeUser] [HttpPost] [ValidateJsonAntiForgeryToken] public ActionResult EventDetails(int eventId) { string details = this._eventDataProvider.GetById(eventId).Comments; if (string.IsNullOrEmpty(details)) details
正在测试的控制器操作:

[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
        });
    }

控制器的测试代码:想知道我需要做些什么来测试从控制器返回的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);

希望这有助于或至少为您提供一个跳跃点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读