2

インメモリ キャッシングを使用する 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)
4

1 に答える 1

3

私は問題を理解しました。キャッシュ呼び出しを機能させるには、要求で応答コンテンツ タイプを提供する必要があります。以下の修正:

service.RequestContext = new MockRequestContext() { ResponseContentType = ContentType.Json };
于 2013-09-26T02:01:38.203 に答える