2012-06-25 3 views
0

Каков наилучший подход для издевательства статического класса в C#. Например:Mocking static methods in C# using Rhino Mock

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

Я хочу, чтобы дразнить это, но нужно будет обернуть его в классе с интерфейсом, что это лучший подход, и делает этот подход работать для всех статических методов?

Будет ли этот подход не делать много совершенно бессмысленных интерфейсов и классов?

ответ

6

Каков наилучший подход к насмешливым из статического класса в C#

Лучше всего, чтобы скрыть эти статические вызовы, стоящих за абстракциями. Это может быть фальшивка. Например:

public interface IApplicationPhysicalPathProvider 
{ 
    string ApplicationPhysicalPath { get; } 
} 

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

Этот совет подходит для любых насмешливых фреймворков и даже если вы вообще не используете насмешливую структуру.