在C#集成测试中查询JsonResult
本文关键字:查询 JsonResult 集成测试 | 更新日期: 2024-09-19 09:17:15
我正试图为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中返回的匿名类型呢?
您需要定义要反序列化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);
}