2015-09-03 222 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庫進行反序列化,具體取決於您要測試的內容。 –