我還在計算單元測試使用NUnit的我的ASP.Net MVC2應用程序的一些細節。總體而言,測試我的ActionResults,模型,存儲庫等是非常簡單的,但是我之前不需要測試Ajax方法,所以我希望得到一些關於如何最好地實現它的指導。你如何測試你的ASP.Net MVC JsonResult操作?
在此先感謝。
我還在計算單元測試使用NUnit的我的ASP.Net MVC2應用程序的一些細節。總體而言,測試我的ActionResults,模型,存儲庫等是非常簡單的,但是我之前不需要測試Ajax方法,所以我希望得到一些關於如何最好地實現它的指導。你如何測試你的ASP.Net MVC JsonResult操作?
在此先感謝。
測試控制器操作返回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);
IMO,最好不要測試你的Ajax方法(我的意思是客戶端,你可以輕鬆測試的服務器上的控制器),而是測試客戶端的UI。爲了測試UI,我建議您使用Selenium RC或WatiN。
爲什麼你斷言IsInstanceOfType?如果它不是這個類型,反正會拋出異常。 – gdoron 2011-12-11 14:16:55