2

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

  • 管理界面
  • 单元测试
  • 网页界面

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

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

得到字符串。

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

这就是我所做的

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

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

我编辑了链接的属性:

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

我实际上可以使用以下方法检索字符串:

Resources.stringName

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

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

4

1 回答 1

1

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

当您说“我设法模拟GetGlobalResourceObject方法”时,我假设您正在使用 HttpContextBase.GetGlobalResourceObject (可在您的控制器中访问)。

因此,出于单元测试的目的,您不需要任何 resx 文件。只需在该模拟方法上设置正确的调用,它就会返回所需的任何内容。

于 2013-09-03T21:17:20.333 回答