I was trying to unit test a method in one of my Controllers returning a JsonResult. To my surprise the following code didn\'t work:
[HttpPost]
public JsonResult
Having read the responses here and then looking further afield I found a 2009 msdn blog post with a different approach again. But.. in the comments was a very simple and very elegant solution by Kieran ... to use .ToString()
.
In your original case:
[HttpPost]
public JsonResult Test()
{
return Json(new {Id = 123});
}
You could test by doing:
var jsonResult = controller.Test();
Assert.AreEqual("{Id = 123}", jsonResult.Data.ToString());
I much prefer this solution as it:
InternalsVisibleTo
, ExpandoObject
), JsonResult
?), and,