我需要帮助单元测试MVC.Net站点中的JsonResults

时间:2017-04-26 21:27:32

标签: c# asp.net-mvc unit-testing

我在尝试在我的MVC.Net应用程序中对JsonResult进行单元测试时遇到错误。

我看到我在测试中使用动态检索数据,但是当我执行Assert.AreEqual时出现错误。

我做错了什么?我该如何解决这个问题?

我已经在我的单元测试中包含了我使用的代码以及我得到的错误(参见下面的图片):

在单位测试中使用的代码

   [TestMethod]
   public void getStatusesInfoTESTTest()
   {
       const int statusID = 12;
       MasterDataController controller = new MasterDataController();
       var result = controller.getStatusInfoTEST(statusID) as JsonResult;
       dynamic data = result.Data;
       Assert.AreEqual("TESTING 123", data.MasterDataDescription);
    }

错误我获取:

IMAGE OF ERROR I GET

错误消息:

类型' Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'的例外情况发生在System.Core.dll中但未在用户代码中处理

我回来的数据图像 IMAGE OF RETURNED DATA

感谢您的帮助, mrotor

1 个答案:

答案 0 :(得分:0)

您应该将控制器的逻辑提取到某种形式的服务类。这使得单元测试变得更加容易。

控制器应该专注于获取服务的原始值(可能是字典或IList或其他)并将其抽象为JSON对象。

然后,您可以更轻松地专注于对服务进行单元测试。

我一直认为,如果你是对你的控制器进行单元测试,你做错了。模型和服务应该是单元测试的,Controller只是将两者绑定在一起,但不应该有任何涉及testable的东西,因为它们的逻辑是隐含的。

这可以帮助您解开图层。