C# 在单元测试中链接resx文件
我正在Visual Studio 2012中为ASP.NET MVC 4 web应用程序进行单元测试项目。 该解决方案有3个项目:C# 在单元测试中链接resx文件,c#,asp.net,unit-testing,resx,C#,Asp.net,Unit Testing,Resx,我正在Visual Studio 2012中为ASP.NET MVC 4 web应用程序进行单元测试项目。 该解决方案有3个项目: 管理员 单元测试 WebUI WebUI在App_GlobalResources文件夹中有一些用于定位的resx文件,它使用: HttpContext.GetGlobalResourceObject("Resources", key).ToString() 去拿线 现在我需要对一个使用本地化的操作方法进行单元测试。 我想在对方法进行单元测试时获取字符串 这就是
- 管理员
- 单元测试
- WebUI
HttpContext.GetGlobalResourceObject("Resources", key).ToString()
去拿线
现在我需要对一个使用本地化的操作方法进行单元测试。
我想在对方法进行单元测试时获取字符串
这就是我所做的
我设法模拟了GetGlobalResourceObject方法,我可以发送任何需要的字符串
我将Resources.resx文件作为链接添加到UnitTests项目中
我编辑了链接的属性:
- 构建操作:嵌入式资源
- 复制到输出目录:不复制
- 自定义工具:GlobalResourceProxyGenerator
Resources.stringName
但是,如果我在原始resx文件(WebUI项目中的文件)中添加一个新字符串,一切都会崩溃,我无法构建解决方案
链接不应该反映原始文件吗?您所描述的不是真正的单元测试。单元测试不应依赖于外部资源 当您说“我设法模拟了
GetGlobalResourceObject
方法”时,我假定您正在使用HttpContextBase.GetGlobalResourceObject(可在控制器中访问)
因此,出于单元测试的目的,您不需要任何resx文件。只要在模拟方法上设置适当的调用,它就会返回所需的任何内容。没错,测试resx文件会使单元测试成为集成测试。我可以将GetGlobalResourceObject包装在接口中并模拟该接口。否则,干脆放弃这部分测试。谢谢!!!