c# – 使用匿名类型的单元测试 – JSON

我必须编写一个测试控制器的单元测试,该控制器碰巧将
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属性.

我该如何测试呢?

《c# – 使用匿名类型的单元测试 – JSON》

《c# – 使用匿名类型的单元测试 – JSON》

最佳答案 我解决了这个问题.

问题出在[assembly:InternalsVisibleTo()]属性上.

我不小心把它放在我的单元测试项目中,而不是在从控制器返回匿名类型的Web API应用程序中.

将此添加到Web API项目中的AssemblyInfo.cs文件并使用具有该属性的单元测试项目名称解决了错误,并且动态对象现在按预期填充.

《c# – 使用匿名类型的单元测试 – JSON》

点赞