所以,在执行casperOne的回答后,我又遇到了一个错误:
我收到了一封IOException 说明:
"Could not load file or assembly 'App_GlobalResources' or one of its dependencies. The system cannot find the file specified.":"App_GlobalResources"
Scott Allen为此问题提供了reason and inherent solution。
所以我所做的是在我的网络项目中名为“TResources”的新文件夹中创建了一个新资源文件,命名为“TResources”纯粹是因为它是一个仅用于测试目的的资源文件夹(聪明,嗯?)
然后我将ResourcesWrapper 类的属性更改为返回TResources.Strings.MyStringResource 而不是Resources.Strings.MyStringResource。
注意:IResources接口中的属性不能是只读的,和设置mock对象时一样,如果属性是read -only 会失败,因为无法设置值。
因此,IResources 应该看起来像这样:
public interface IResources
{
string MyStringResource { get; set; }
}
ResourcesWrapper 应该像这样实现IResources:
public class ResourcesWrapper : IResources
{
public string MyStringResource
{
get
{
return TResources.Strings.MyStringResource;
}
set
{
//do nothing
}
}
}
这样您就可以在单元测试中成功模拟,如下所示:
var mock = new Mock<IResources>();
mock.SetupProperty(m => m.MyStringResource, "");
注意:您不必在上述方法的initialValue 参数中指定任何内容,因为该属性将返回从Strings.resx 检索到的值。
我的问题到此结束,我希望这对互联网领域的其他人有所帮助!