我必须编写一个测试控制器的单元测试,该控制器碰巧将
JSON作为匿名类型返回.
这是匿名的唯一原因是因为我需要为它添加一个根节点,所以从控制器的返回如下所示:
return Json(new { User = person });
这会将一个根节点添加到带有“User”的JSON,然后是一个序列化为JSON的Person对象.
这工作正常,我的问题是单元测试.
我见过测试这样的匿名类型的唯一解决方案是首先使用AssemblyInfo.cs中的InternalsVisibleTo使测试项目可见,然后使用dynamic来获取结果.
dynamic results = userController.GetPerson(1);
dynamic content = results.Content;
这在第二行失败,说该对象没有Content属性.但是,在调试器下,它显示了Content属性.
我该如何测试呢?
最佳答案 我解决了这个问题.
问题出在[assembly:InternalsVisibleTo()]属性上.
我不小心把它放在我的单元测试项目中,而不是在从控制器返回匿名类型的Web API应用程序中.
将此添加到Web API项目中的AssemblyInfo.cs文件并使用具有该属性的单元测试项目名称解决了错误,并且动态对象现在按预期填充.