2010-03-04 78 views
5

我還在計算單元測試使用NUnit的我的ASP.Net MVC2應用程序的一些細節。總體而言,測試我的ActionResults,模型,存儲庫等是非常簡單的,但是我之前不需要測試Ajax方法,所以我希望得到一些關於如何最好地實現它的指導。你如何測試你的ASP.Net MVC JsonResult操作?

在此先感謝。

回答

6

測試控制器操作返回JsonResult應該與測試其他操作不同。考慮以下情形:

public class MyModel 
{ 
    public string Name { get; set; } 
} 

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return Json(new MyModel { Name = "Hello World" }); 
    } 
} 

而且單元測試(抱歉,這是MSTest的,我沒有NUnit的自動取款機,但它應該是相當兩岸前進):

// arrange 
var sut = new HomeController(); 

// act 
var actual = sut.Index(); 

// assert 
Assert.IsInstanceOfType(actual, typeof(JsonResult)); 
var jsonResult = (JsonResult)actual; 
Assert.IsInstanceOfType(jsonResult.Data, typeof(MyModel)); 
var model = (MyModel)jsonResult.Data; 
Assert.AreEqual("Hello World", model.Name); 
+1

爲什麼你斷言IsInstanceOfType?如果它不是這個類型,反正會拋出異常。 – gdoron 2011-12-11 14:16:55

0

IMO,最好不要測試你的Ajax方法(我的意思是客戶端,你可以輕鬆測試的服務器上的控制器),而是測試客戶端的UI。爲了測試UI,我建議您使用Selenium RCWatiN