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(); }
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(); }
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(); }