コード例 #1
0
    public void Get_InDist_SetMem()
    {
        // arrange
        var          cache         = new Mock <IDistributedCache>();
        const string obj           = "blob";
        var          expectedBytes = Encoding.UTF8.GetBytes($"\"{obj}\"");

        cache.Setup(m => m.Get("test")).Returns(expectedBytes);

        var memory = new Mock <IMemoryCache>();
        var entry  = new Mock <ICacheEntry>();

        memory.Setup(m => m.CreateEntry(It.IsAny <object>())).Returns(entry.Object);
        var svc = new DualLayerCacheService(cache.Object, memory.Object, new NullLogger <DualLayerCacheService>(), _opts);

        // act
        var _ = svc.Get <string>("test");

        // assert
        cache.Verify(m => m.Get("test"));
        cache.VerifyNoOtherCalls();
        entry.VerifySet(m => m.Value = obj);
        entry.VerifySet(m => m.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(_opts.Value.DefaultMemoryExpirySeconds));
        entry.Verify(m => m.Dispose());
        object val;

        memory.Verify(m => m.TryGetValue("test", out val));
        memory.Verify(m => m.CreateEntry("test"));
        memory.VerifyNoOtherCalls();
    }
コード例 #2
0
    public void Get_InMem_SkipDistributed_OK()
    {
        // arrange
        var    cache  = new Mock <IDistributedCache>();
        var    memory = new Mock <IMemoryCache>();
        object val    = "blob";

        memory.Setup(m => m.TryGetValue("test", out val)).Returns(true);
        var svc = new DualLayerCacheService(cache.Object, memory.Object, new NullLogger <DualLayerCacheService>(), _opts);

        // act
        var _ = svc.Get <string>("test");

        // assert
        cache.VerifyNoOtherCalls();
        memory.Verify(m => m.TryGetValue("test", out val));
        memory.VerifyNoOtherCalls();
    }
コード例 #3
0
    public void Get_OK()
    {
        // arrange
        var cache  = new Mock <IDistributedCache>();
        var memory = new Mock <IMemoryCache>();
        var entry  = new Mock <ICacheEntry>();

        memory.Setup(m => m.CreateEntry(It.IsAny <object>())).Returns(entry.Object);
        var svc = new DualLayerCacheService(cache.Object, memory.Object, new NullLogger <DualLayerCacheService>(), _opts);

        // act
        var _ = svc.Get <string>("test");

        // assert
        cache.Verify(m => m.Get("test"));
        cache.VerifyNoOtherCalls();
        entry.VerifyNoOtherCalls();
        object val;

        memory.Verify(m => m.TryGetValue("test", out val));
        memory.VerifyNoOtherCalls();
    }