C# 匿名类型的单元测试-JSON
我必须编写一个单元测试来测试一个控制器,该控制器恰好以匿名类型返回JSON 这是匿名的唯一原因是我需要向其添加根节点,因此控制器返回的结果如下所示:C# 匿名类型的单元测试-JSON,c#,json,unit-testing,C#,Json,Unit Testing,我必须编写一个单元测试来测试一个控制器,该控制器恰好以匿名类型返回JSON 这是匿名的唯一原因是我需要向其添加根节点,因此控制器返回的结果如下所示: return Json(new { User = person }); 这将向JSON添加一个带有“User”的根节点,后跟序列化为JSON的Person对象 这很好,我的问题是单元测试 我见过的测试匿名类型的唯一解决方案是,首先使用AssemblyInfo.cs中的InternalsVisibleTo使测试项目可见,然后使用dynamic获得结
return Json(new { User = person });
这将向JSON添加一个带有“User”的根节点,后跟序列化为JSON的Person
对象
这很好,我的问题是单元测试
我见过的测试匿名类型的唯一解决方案是,首先使用AssemblyInfo.cs中的InternalsVisibleTo
使测试项目可见,然后使用dynamic
获得结果
dynamic results = userController.GetPerson(1);
dynamic content = results.Content;
这在第二行失败,表示对象
没有内容属性。但是,在调试器下,它显示内容属性
我该怎么测试这个呢
您可以在调用GetPerson之前实例化动态对象,就像在这里一样 我解决了这个问题 问题在于
[assembly:InternalsVisibleTo()]
属性
我不小心把它放在了我的单元测试项目中,而不是从控制器返回匿名类型的WebAPI应用程序中
将其添加到Web API项目中的AssemblyInfo.cs文件中,并使用带有属性的单元测试项目名称解决了错误,并且dynamic
对象现在按预期填充
结果。内容有效。我可以在VisualStudio调试器中看到它,它包含一个有效的对象并设置了属性。我不理解为什么在这里处理
动态对象时,它声称对象不包含内容属性,但是如果我在Visual Studio调试器中查看该对象并展开内容,它都是有效的。您可以在调用GetPerson之前实例化动态对象,就像在这里一样