2013-09-26 5 views
2

Я пытаюсь выполнить тестирование службы ServiceStack, используемой в кешировании памяти. Я использую MockRequestContext, и когда я попал в базу return.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 }; 
Смежные вопросы