在 C# 集成测试中查询 JsonResult

Posted

技术标签:

【中文标题】在 C# 集成测试中查询 JsonResult【英文标题】:Querying JsonResult in C# integration tests 【发布时间】:2016-08-07 02:51:52 【问题描述】:

我正在尝试为 MVC 应用程序编写一些集成测试,如下所示

控制器

public JsonResult CreateWithJson(List<string> values) 

  if (values == null) return Json(new  Valid = false, Message = "No data was received by the server" );

测试类

public static void TestEmptyDataFailsGracefully()

  var objUt = new MyController();
  var actual = objUt.CreateWithJson(new List<string>());

  actual.Should().BeOfType(typeof(JsonResult));

  // this is System.Object
  actual.Data...

  // what I want to do
  actual.Data.Valid.Should.Be(false);

请问JsonResult中返回的匿名类型如何查询呢?

【问题讨论】:

这可能会有所帮助:***.com/questions/17232470/… 【参考方案1】:

您需要定义要反序列化的类型 JsonResult

public class ValidationResults 

   bool Valid get;set;
   string Message get;set;


public JsonResult CreateWithJson(List<string> values) 

  if (values == null) return Json(new ValidationResults  Valid = false, Message = "No data was received by the server" );


public static void TestEmptyDataFailsGracefully()

  var objUt = new MyController();
  var actual = objUt.CreateWithJson(new List<string>());

  actual.Should().BeOfType(typeof(JsonResult));

  var serializer = new javascriptSerializer();
  var json = serializer.Serialize(actual.Data);
  ValidationResults validationResult = serializer.Deserialize<ValidationResults>(json);


  // what I want to do
  validationResult .Valid.Should.Be(false);

【讨论】:

感谢完美工作;查找测试项目的参考:***.com/questions/7000811/…

以上是关于在 C# 集成测试中查询 JsonResult的主要内容,如果未能解决你的问题,请参考以下文章

TestFlight 集成查询

LINQ 查询表达式(C# 编程指南)

如何将 Appium 与 C# 集成?

如何为 xunit 集成测试编写 GraphQL 变异查询

MySQL 集成测试“未找到查询”

语言集成查询 (LINQ)