链接单元测试中的resx文件

本文关键字:resx 文件 单元测试 链接 | 更新日期: 2023-09-27 18:29:56

我正在Visual Studio 2012中为ASP.NET MVC 4 web应用程序开发一个单元测试项目。该解决方案有3个项目:

  • AdminUI
  • 单元测试
  • WebUI

WebUI在App_GlobalResources文件夹中有一些用于定位的resx文件,它使用:

HttpContext.GetGlobalResourceObject("Resources", key).ToString()

以获取字符串。

现在我需要对一个使用本地化的操作方法进行单元测试。我想在单元测试该方法时获得字符串。

以下是我做的

我设法模拟了GetGlobalResourceObject方法,我可以发送任何需要的字符串

我将Resources.resx文件作为链接添加到UnitTests项目中

我编辑了链接的属性:

  • 生成操作:嵌入资源
  • 复制到输出目录:不复制
  • 自定义工具:GlobalResourceProxyGenerator

我实际上可以使用检索字符串

Resources.stringName

但是,如果我在原始resx文件(WebUI项目中的文件)中添加一个新字符串,那么一切都会崩溃,我无法构建解决方案。

链接不是应该反映原始文件吗?

链接单元测试中的resx文件

您所描述的并不是真正的单元测试。单元测试不应依赖于外部资源。

当您说"我成功地模拟了GetGlobalResourceObject方法"时,我假设您正在使用HttpContextBase.GetGlobalResourceObject(可在控制器中访问)。

因此,出于单元测试的目的,您不需要任何resx文件。只需对该模拟方法设置适当的调用,它就可以返回所需的任何内容。