0

c#で静的クラスをモックアウトするための最良のアプローチは何ですか. 例えば:

String appPath = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;

これをモックしたいのですが、インターフェイスを使用してクラスにラップする必要があります。最善のアプローチは何ですか?このアプローチはすべての静的メソッドで機能しますか?

このアプローチは、まったく無意味なインターフェースやクラスをたくさん作るのではないでしょうか?

4

1 に答える 1

5

c#で静的クラスをモックアウトするための最良のアプローチは何ですか?

最善のアプローチは、これらの静的呼び出しを抽象化の背後に隠すことです。それらは偽造することができます。例えば:

public interface IApplicationPhysicalPathProvider
{
    string ApplicationPhysicalPath { get; }
}

public class AspNetApplicationPhysicalPathProvider : IApplicationPhysicalPathProvider
{
    public string ApplicationPhysicalPath 
    {
        get { return HostingEnvironment.ApplicationPhysicalPath; }
    }
}

このアドバイスは、あらゆるモッキング フレームワークに当てはまり、モッキング フレームワークをまったく使用しない場合でも当てはまります。

于 2012-06-25T10:04:21.830 に答える