2015-09-03 177 views
0

在我的控制器我有以下的Json方法:单元测试JSON结果

[HttpPost] 
public JsonResult GetStatuses() 
{ 
    var allItems = rep.GetStatuses() 
      .OrderBy(i => i.Name) 
      .Select(i => i.Name); 

    return Json(new { Items = allItems }); 
} 

的方法GetStatuses返回状态(列表)的列表。

在我的单元测试,我得到的结果:

JsonResult result = testController.GetStatuses() as JsonResult; 

但我不知道如何反序列化的结果返回给列表中,使我可以查询的结果。

+2

顺便说一句,为什么当这是声明的返回类型时有'as JsonResult'? –

+0

var result = testController.GetStatuses();就足够了 – Neel

回答

2

只解析JSON,例如使用Json.NET:

JsonResult result = testController.GetStatuses(); 
string json = (string) result.Data; 
List<Status> statuses = JsonConvert.DeserializeObject<List<Status>>(json); 
// Check statuses 
+0

所以基本上你测试了往返:在同一个测试中序列化和反序列化。好主意,因为自定义转换器可能只有一个方向的错误。 – Aphelion

+0

考虑是否应该使用不同的json库进行反序列化,具体取决于您要测试的内容。 –