したがって、casperOneの回答を実装した後、別のエラーが発生しました。
私は次のようにIOException
述べられました:
"Could not load file or assembly 'App_GlobalResources' or one of its dependencies. The system cannot find the file specified.":"App_GlobalResources"
スコット・アレンは、この問題の理由と固有の解決策を提供しました。
それで、私がしたことは、私のWebプロジェクトの「TResources」という名前の新しいフォルダーに「TResources」という名前の新しいリソースファイルを作成したことです。これは、テスト目的でのみ作成および使用されるResourcesフォルダーだからです(賢いですね)。
ResourcesWrapper
次に、クラスのプロパティを変更して、TResources.Strings.MyStringResource
ではなくreturnに変更しましたResources.Strings.MyStringResource
。
注:モックオブジェクトを設定する場合のように、インターフェイスのプロパティは読み取り専用IResources
であってはなりません。プロパティが読み取り専用の場合、値を設定できないため失敗します。
したがって、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
。
これで私の質問は終わりです。これがインターネット上の他の誰かに役立つことを願っています。