2013-09-26 43 views
2

我想單元測試在內存緩存中使用的ServiceStack服務。我正在使用MockRequestContext,當我點擊返回base.RequestContext.ToOptimizedResultUsingCache時,我得到一個超出範圍的異常。我不確定有什麼缺失。是否有可能使用此模擬請求上下文來單元測試使用緩存的服務?ServiceStack MockRequestContext和緩存

測試代碼

[TestMethod] 
    public void GetAgencyCase_Returns_AgencyCaseDetailsResponse() 
    { 
     var service = _container.Resolve<AgencyCaseService>(); 
     service.SetResolver(new BasicResolver(_container)); 

     service.RequestContext = new MockRequestContext(); 

     var response = service.Get(new GetAgencyCase { AgencyId = 2, AgencyCaseNumber = "123" }); 
    } 

和呼叫到我測試服務中的高速緩存優化擴展方法。

return base.RequestContext.ToOptimizedResultUsingCache<AgencyCaseDetailsResponse>(base.Cache, cacheKey, cacheExpireTime,() => 
       {... 

堆棧跟蹤從IndexOutOfRangeException

at ServiceStack.Common.Web.ContentType.IsBinary(String contentType) 
    at ServiceStack.CacheAccess.Providers.CacheClientExtensions.ResolveFromCache(ICacheClient    cacheClient, String cacheKey, IRequestContext context) 
    at ServiceStack.ServiceHost.RequestContextExtensions.ToOptimizedResultUsingCache[T](IRequestContext requestContext, ICacheClient cacheClient, String cacheKey, Nullable`1 expireCacheIn, Func`1 factoryFn) 

回答

3

我想通了這個問題。您必須爲請求提供響應內容類型才能使緩存呼叫生效。下面的修復:

service.RequestContext = new MockRequestContext() { ResponseContentType = ContentType.Json }; 
相關問題