1

だから私はこの単体テストを持っています:

[TestMethod]
public void TestNullString()
{
    String expectedTestValue = null;
    var uid = Guid.NewGuid().ToString();

    redis.Wait(redis.Strings.Set(db, uid, expectedTestValue));
    var testValue = redis.Wait(redis.Strings.GetString(db, uid));

    Assert.AreEqual(expectedTestValue, testValue);
}

結果はタイムアウトです。これは起こるはずですか、それとも私は何か間違ったことをしていますか?

4

1 に答える 1

1

Redis には の概念がありませんnull。文字列"abc"存在するか(つまり、""長さがゼロの文字列でも問題ありません)、そうでないか(つまり、キーが存在しません) のいずれかです。

ここでの「バグ」は、BookSleeve がnull値をチェックせず.String.Set、例外をスローすることです。それはすぐに修正されます。

現在起こっていることは、コマンドをストリームに書き込むときにコードが失敗することです。特に、redis バイナリ プロトコルは、データを送信するに引数の数を宣言することを意味します。 「キー」、「値」-値を書き込むことはないため、サーバーは「有効ではありません」という応答を送信する機会さえありません。サーバーに関する限り、追加のパラメーターを待機しています。

于 2012-08-02T07:02:47.393 に答える