public async Task ShouldRemoveExpiredItemFromCache() { // Arrange await _sut.RemoveExpiredKeys().ConfigureAwait(false); var key = _fixture.FormatKey($"TagCacheTests:{nameof(ShouldRemoveExpiredItemFromCache)}"); const string value = "Test Value"; var expires = DateTime.Now.AddSeconds(3); const string tag1 = "tag1"; const string tag2 = "tag2"; await _sut.SetItem(key, value, expires, tag1, tag2).ConfigureAwait(false); var result = await _sut.GetItem <string>(key).ConfigureAwait(false); result.ShouldNotBeNull(); result.Value.ShouldBe(value); Thread.Sleep(1000); result = await _sut.GetItem <string>(key).ConfigureAwait(false); result.ShouldNotBeNull(); result.Value.ShouldBe(value); // Act Thread.Sleep(2500); await _sut.RemoveExpiredKeys().ConfigureAwait(false); Thread.Sleep(500); result = await _sut.GetItem <string>(key).ConfigureAwait(false); // Assert result.ShouldBeNull(); }