我正在编写一些单元测试,并且想知道模拟是否有利Cache
,如果是,如何?
目前在我的测试中,我正在模拟HttpContextBase
并将其包装在自定义中HttpContextFactory
:
var mockedHttpContextBase = new Mock<HttpContextBase>();
IHttpContextFactory httpContextFactory = new HttpContextFactory
{
Current = mockedHttpContextBase.Object
};
并且当我的代码使用时,我会IHttpContextFactory
在对其进行任何操作之前检查缓存是否为空。
var cache = _httpContextFactory.Current.Cache;
Func<SomeReturnType> doSomeWork = () => _foo.someMethodIExecute(param1,param2);
return cache != null ? cache.GetOrStore("doSomeWorkCacheKey",doSomeWork, 900)
: doSomeWork.Invoke();
每次我使用它时检查缓存是否为空是正确的,还是你会在测试中模拟缓存,以便在运行单元测试时它不为空?