在一个成功的AJAX调用的事件我想回到一个简单的对象与Success = true
单元测试一个简单的JsonResult的最佳方法是什么?
public ActionResult Foo(int id)
{
// ...
return Json(new {Success=true});
}
能正常工作和对象我的javascript接收像
{ Success : true }
长相,而是因为返回的对象是匿名类型,我不能这样做(像)在我的测试如下:
var result = (JsonResult)controller.AddNote(id, message);
dynamic data = result.Data;
// Assert
Assert.That(data.Success, Is.EqualTo(true));
于是,我就退役使用允许测试以我想要的方式工作的ExpandoObject,但发送回AJAX响应的JSON是一团糟,as detailed in this question。
[{"Key":"Success","Value":true}]
有一个简单,干净的方式实现什么似乎像它应该很容易,或者是执行一些自定义序列作为链接的问题的唯一途径?
您在单元测试中得到的result.Data不能包含json数据,因为jsonResult序列化程序仅在ExecuteResult方法中运行,该方法未在单元测试中运行。 result.Data中的“数据”只是您在AddNote/Foo操作中分配的匿名数据。你测试的不是json数据! – Elisabeth