gpt4 book ai didi

asp.net-mvc-4 - 使用 Kendo 对 ASP.NET MVC4 Controller 进行单元测试

转载 作者:行者123 更新时间:2023-12-02 09:39:14 26 4
gpt4 key购买 nike

我正在尝试对返回包装为 Json 的 Kendo.UI.Mvc 数据源结果的 ASP.NET MVC 4 Controller 进行单元测试。问题是我无法获取返回的实际数据..它始终为空。

问题是,如何验证从包装 Kendo.UI DataSourceResult 的 Controller 返回的 JSON。

最佳答案

这个问题很令人恼火,因为我在调试时可以在 VS 中看到我想要的数据集合。我已经更新了测试装置 - 可以对模型数据执行断言。

基本上我做了以下事情:

  1. 将 ActionResult 转换为 JsonResult
  2. 使用动态类型,从返回 Kendo.Mvc.UI.DataSourceResult 的 JsonResult 中获取“数据”。在使用动态类型之前,仅返回 null。 ( self 提醒,详细了解动态类型)
  3. 将第 2 步的结果转换为您要测试的数据类型。

Controller :

    public ActionResult EditRead([DataSourceRequest] DataSourceRequest request)
{
return Json(GetViewModel().ToDataSourceResult(request));
}

单元测试:

    [Test]
public void EditRead_Should_Read_List_Or_Pharmacies()
{
//Create test db
var db = new FakePharmacyDirectoryDb();
db.AddSet(TestData.PharmacyLocations(10));

//setup controller, we need to mock a DataSourceRequest
//that Kendo.Mvc uses to communicate with the View
var controller = new DirectoryController(db);
var kendoDataRequest = new DataSourceRequest();

//get the result back from the controller
var controllerResult = controller.EditRead(kendoDataRequest);

//cast the results to Json
var jsonResult = controllerResult as JsonResult;

//at runtime, jsonRsult.Data data will return variable of type Kendo.Mvc.UI.DataSourceResult
dynamic kendoResultData = jsonResult.Data;

//... which you can then cast DataSourceResult.Data as
//the return type you are trying to test
var results = kendoResultData.Data as List<PharmacyLocation>;

Assert.IsInstanceOf<List<PharmacyLocation>>(results);
Assert.AreEqual(10,results.Count);
}

关于asp.net-mvc-4 - 使用 Kendo 对 ASP.NET MVC4 Controller 进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14667911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com