次のテストでは、キーの有効期限を既に経過した時間 (10 秒前) に設定しようとしています。設定された有効期限が「失敗」した場合に例外をスローできるようにする必要があります。キャッシュを設定する前に有効期限を確認できることは理解していますが、個別のチェックを避けたい場合もあります。
私が観察できる(一貫した)動作から、最初は常に「成功」し(trueを返します)、2回目は期待どおりに動作します(falseを返します)。
[Test]
public void SetExpirationToPassed()
{
var key = "testKey";
using (var conn = CreateConnection())
{
// Given
var cache = conn.GetDatabase();
cache.HashSet(key, "full", "test", When.NotExists, CommandFlags.PreferMaster);
Thread.Sleep(10 * 1000);
// When
var expiresOn = DateTime.UtcNow.AddSeconds(-10);
var firstResult = cache.KeyExpire(key, expiresOn, CommandFlags.PreferMaster);
var secondResult = cache.KeyExpire(key, expiresOn, CommandFlags.PreferMaster);
var exists = cache.KeyExists(key);
var ttl = cache.KeyTimeToLive(key);
// Then
secondResult.ShouldBe(false);
firstResult.ShouldBe(false);
exists.ShouldBe(false);
ttl.ShouldBe(null);
}
}
private ConnectionMultiplexer CreateConnection()
{
return ConnectionMultiplexer connection =ConnectionMultiplexer.Connect(...);
}
私は何か間違ったことをしているかもしれませんか?