2017-04-26 72 views
0

我收到一个错误,试图单元测试我的MVC.Net应用程序中的JsonResult。我需要帮助单元测试MVC.Net站点JsonResults

我看到我在我的测试中使用动态检索数据,但是当我执行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); 
    } 

ERROR我得到:

IMAGE OF ERROR I GET

错误消息:

型“Microsoft.CSharp.RuntimeBinder.RuntimeBinderException”的异常出现在System.Core.dll但在用户代码中没有处理

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

感谢您的帮助, mrotor

+1

显示待测方法。 'getStatusInfoTEST'是数据的具体类型还是匿名类型? – Nkosi

回答

0

你应该提取你的控制器日志ic到某种形式的服务类。这使得单元测试更容易。

控制器应该只关注服务的原始值(可能是字典或IList或其他)并将其抽象到JSON对象中。

然后你可以专注于单元测试服务更容易。

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

这可以帮助你解开图层。