在 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的主要内容,如果未能解决你的问题,请参考以下文章