public void Get_CacheNullAndEmptyCollectionIsTrue_AddsCachedNullValueToCacheAndReturnsNull()
        {
            const string cacheKey = "abc";

            var objectToAdd = new CachedNullValue();

            var cacheFake = A.Fake <ICache>();

            A.CallTo(() => cacheFake.Get(cacheKey)).Returns((object)null);

            var cacheManager = new CacheService(cacheFake, A.Fake <ICacheServiceLogger>());
            var obj          = cacheManager.Get(cacheKey, new TimeSpan(0, 10, 0), true, () => objectToAdd);

            A.CallTo(() => cacheFake.Add(cacheKey, objectToAdd, A <DateTime> .Ignored)).MustHaveHappened(Repeated.Exactly.Once);
        }
        public void Get_ObjectNotFoundInCache_LogsNotFoundInCacheMethodCall()
        {
            const string cacheKey = "abc";

            var objectToAdd = new CachedNullValue();

            var cacheFake = A.Fake <ICache>();

            A.CallTo(() => cacheFake.Get(cacheKey)).Returns((object)null);
            var cacheServiceLoggerFake = A.Fake <ICacheServiceLogger>();

            var cacheManager = new CacheService(cacheFake, cacheServiceLoggerFake);
            Func <CachedNullValue> delegateFunction = () => objectToAdd;
            var obj = cacheManager.Get(cacheKey, new TimeSpan(0, 10, 0), true, delegateFunction);

            A.CallTo(() => cacheServiceLoggerFake.LogMethodCall(false, delegateFunction)).MustHaveHappened(Repeated.Exactly.Once);
        }