我在尝试在我的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);
}
错误我获取:
错误消息:
类型' Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'的例外情况发生在System.Core.dll中但未在用户代码中处理
我回来的数据图像 IMAGE OF RETURNED DATA
感谢您的帮助, mrotor
答案 0 :(得分:0)
您应该将控制器的逻辑提取到某种形式的服务类。这使得单元测试变得更加容易。
控制器应该专注于获取服务的原始值(可能是字典或IList或其他)并将其抽象为JSON对象。
然后,您可以更轻松地专注于对服务进行单元测试。
我一直认为,如果你是对你的控制器进行单元测试,你做错了。模型和服务应该是单元测试的,Controller只是将两者绑定在一起,但不应该有任何涉及testable的东西,因为它们的逻辑是隐含的。
这可以帮助您解开图层。