ServiceStack MockRequestContext и кэширование

Я пытаюсь провести модульное тестирование службы ServiceStack, которая использует кэширование памяти. Я использую MockRequestContext, и когда я нажимаю return base.RequestContext.ToOptimizedResultUsingCache, я получаю исключение индекса вне диапазона. Я не уверен, чего не хватает. Можно ли использовать этот фиктивный контекст запроса для модульного тестирования службы, использующей кэширование?

Тестовый код

    [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)

person Don Fitz    schedule 26.09.2013    source источник


Ответы (1)


Я понял проблему. Вы должны указать тип содержимого ответа с запросом, чтобы вызов кеша работал. Исправление ниже:

service.RequestContext = new MockRequestContext() { ResponseContentType = ContentType.Json };
person Don Fitz    schedule 26.09.2013