이런 종류의 문제 (문제의 클래스가 인터페이스를 구현하지 않는 곳)에 직면했을 때, 문제의 클래스와 관련된 인터페이스가있는 래퍼가 작성되는 경우가 종종 있습니다. 그렇다면 내 코드에서 래퍼를 사용합니다. 단위 테스트를 위해, 나는 래퍼를 모의하고 그것에 내 자신의 mock 객체를 삽입한다.
물론 조롱 프레임 워크가 작동하는 경우 대신 사용하십시오. 내 경험에 따르면 모든 조롱 프레임 워크는 다양한 .NET 클래스에 몇 가지 문제가 있습니다.
public interface ICacheWrapper
{
...methods to support
}
public class CacheWrapper : ICacheWrapper
{
private System.Web.Caching.Cache cache;
public CacheWrapper(System.Web.Caching.Cache cache)
{
this.cache = cache;
}
... implement methods using cache ...
}
public class MockCacheWrapper : ICacheWrapper
{
private MockCache cache;
public MockCacheWrapper(MockCache cache)
{
this.cache = cache;
}
... implement methods using mock cache...
}
public class MockCache
{
... implement ways to set mock values and retrieve them...
}
[Test]
public void CachingTest()
{
... set up omitted...
ICacheWrapper wrapper = new MockCacheWrapper(new MockCache());
CacheManager manager = new CacheManager(wrapper);
manager.Insert(item,value);
Assert.AreEqual(value, manager[item]);
}
실제 코드는
...
CacheManager manager = new CacheManager(new CacheWrapper(HttpContext.Current.Cache));
manager.Add(item,value);
...
사람들이 쉽게 찾을 수 있도록 질문에 맞춤법을 수정 해주십시오. Cachcing = Caching (당신이나 다른 것을 고르려고하지 않고 - 단지 도우려는 것) – Chris