unit-testing - ServiceStack MockRequestContext 和缓存

标签 unit-testing servicestack

我正在尝试对在内存缓存中使用的 ServiceStack 服务进行单元测试。我正在使用 MockRequestContext,当我返回 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)

最佳答案

我发现了问题所在。您必须为请求提供响应内容类型才能使缓存调用正常工作。修复如下:

service.RequestContext = new MockRequestContext() { ResponseContentType = ContentType.Json };

关于unit-testing - ServiceStack MockRequestContext 和缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19017875/

相关文章:

javascript - Jasmine 2.0 完成及 afterEach

java - 具有多个方法对象的测试类

java - 使用 Mockito : Argument(s) are different! 需要:实际调用有不同的参数:

redis - 在ServiceStack中使用RedisClient的Eval/Lua操作?

.net - 是否可以将 ServiceStack.Text.JsConfig 设置范围限制为您的库?

c# - 反序列化 SFDC REST 服务 JSON 响应

typescript - 如何为自定义 chai 断言添加 typehint?

c# - 如何测试 IEnumerable<int>

c# - SERVICE STACK 中的长轮询

servicestack - 扩展服务堆栈身份验证 - 使用自定义用户身份验证元数据填充用户 session