【问题标题】:How do you unit test your ASP.Net MVC JsonResult actions?您如何对 ASP.Net MVC JsonResult 操作进行单元测试?
【发布时间】:2010-03-04 09:39:51
【问题描述】:

关于使用 NUnit 对我的 ASP.Net MVC2 应用程序进行单元测试,我仍在寻找一些更好的点。

总的来说,测试我的 ActionResults、模型、存储库等是直截了当的,但我以前没有测试过 Ajax 方法,我想要一些关于我应该如何最好地进行测试的指导。

提前致谢。

【问题讨论】:

    标签: jquery asp.net-mvc ajax unit-testing nunit


    【解决方案1】:

    测试返回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 atm,但它应该非常困难):

    // 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);
    

    【讨论】:

    • 为什么要断言 IsInstanceOfType?如果不是类型,无论如何都会抛出异常。
    【解决方案2】:

    IMO,最好不要测试您的 Ajax 方法(我的意思是客户端,服务器上的控制器,您可以轻松测试),而是测试客户端的 UI。为了测试 UI,我建议您使用 Selenium RCWatiN

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 1970-01-01
      相关资源
      最近更新 更多