【问题标题】:How to get the actual JSON from a JsonResult object for a unit test?如何从 JsonResult 对象中获取实际的 JSON 以进行单元测试?
【发布时间】:2011-08-17 17:10:41
【问题描述】:

我想知道如何在单元测试中获取 JsonResult 并获取字符串化的 JSON 来验证它。我已经看到了使用动态类型来验证数据的方法,但我需要实际验证数据是否被适当地转换为字符串。

这是我创建它的代码:

JsonResult result = new JsonResult {Data = new {EncryptedValue = value}};

我传入的 value 对象实际上是我编写的一种类型,它可以接受一个值(int、double、DateTime),当转换为字符串时,它会加密该值,我需要确保 JsonResult 在字符串化时正确地将其转换为字符串。

【问题讨论】:

  • 我通过调查 ExecuteResult 方法找到了最简单的答案。我使用 JavaScriptSerializer 序列化 JsonResult.Data 属性。

标签: asp.net unit-testing asp.net-mvc-3 jsonresult


【解决方案1】:

【讨论】:

  • result.Data 没有 json 数据。它的匿名类型数据。如果你想要真正的序列化 json 数据,你必须运行 ExecuteResult 方法并模拟 controllerContext。
【解决方案2】:

您需要为此模拟 HttpContext 和 ControllerContext。请参阅下面的链接。

http://blogs.msdn.com/b/miah/archive/2009/02/25/unit-testing-the-mvc-jsonresult.aspx

【讨论】:

    【解决方案3】:

    您可以通过多种方式做到这一点,这是很有可能的。

    This blog post 编写并解释了自定义测试的非常好的实现。

    this post 中,作者使用了一个自定义类型,它被返回并做同样的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-03
      • 2011-06-26
      • 1970-01-01
      • 2016-10-18
      • 1970-01-01
      • 2021-12-07
      相关资源
      最近更新 更多