如何对ASP.Net MVC JsonResult操作进行单元测试?

Phi*_*ler 5 ajax asp.net-mvc jquery nunit unit-testing

我还在弄清楚使用NUnit测试我的ASP.Net MVC2应用程序的一些细节.

总的来说,测试我的ActionResults,模型,存储库等是直截了当的,但我之前不必测试Ajax方法,我想要一些关于如何最好地解决它的指导.

提前致谢.

Dar*_*rov 7

测试返回JsonResult的控制器操作不应该与测试其他操作有任何不同.请考虑以下情形:

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

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

和单元测试(对不起,它是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);
Run Code Online (Sandbox Code Playgroud)