如何对.resx资源文件进行单元测试?

时间:2011-12-05 09:04:23

标签: vb.net unit-testing resources mocking moq

我有一个在SubmitClick方法中使用的system.resx资源文件

Protected Sub SubmitClick(ByVal sender As Object, ByVal e As EventArgs)

  (...)

  If (... AndAlso ...) Then
      SetError(Resources.system.groupNoAdminTran)
  End If

End Sub

我的问题是,无论我如何尝试对此进行单元测试,当使用以下命令触发SetError时,测试将失败:

"Could not load file or assembly 'App_GlobalResources' or one of its
 dependencies. The system cannot find the file specified."

有什么方法可以模拟Resources.system吗?

由于

1 个答案:

答案 0 :(得分:0)

这个解决方案可能并不优雅,但我最终会使用它,随时批评。

在参考资料中为每个需要的字符串手动创建了一个属性:

Public Property GroupNoAdminTran() As String
    Get
        If String.IsNullOrEmpty(_groupNoAdminTran) Then
            _groupNoAdminTran = Resources.system.groupNoAdminTran
        End If
        Return _groupNoAdminTran
    End Get
    Set(ByVal value As String)
        _groupNoAdminTran = value
    End Set
End Property

然后可以使用:

Protected Sub SubmitClick(ByVal sender As Object, ByVal e As EventArgs)

  (...)

  If (... AndAlso ...) Then
      SetError(GroupNoAdminTran)
  End If

End Sub 

至于测试,一个简单的模拟将会:

_moqView.Setup(x => x.GroupNoAdminTran).Returns("GroupNoAdminTranTest");

就是这样。我希望这会有所帮助。