2017-01-30 17 views
1

は、このコードを見てみましょ期待通りに動作しない方法を返します。部品番号は

私の問題は、caching.GetKeyAsyncの中で、そのメソッドへの呼び出しがnullの結果を返すことです。私はここで間違って何をしていますか?

GetKeyAsyncのためのコード:

result = _thirdLevelCache.StringGetAsync(key, CommandFlags.None).ContinueWith((prev) => 
     { 
      string res = null; 
      if (!prev.Result.IsNull) 
      { 
       res = prev.Result.ToString(); 
      } 
      return res as object; 
     }); 

答えて

1

私はIt.IsAny<RedisKey>()遅れて申し訳ありません

0

は/の代わりにブロッキング呼び出し.Wait()を使用してのテストを行使する部品番号のResturnsAsyncで待つ非同期を使用してみてください。

public async Task TestMthod() { 
    //Arrange 
    var expected = "not empty or null string"; 
    var thirdLevelCacheMock = new Mock<IDatabase>(); 
    RedisValue val = expected; 
    thirdLevelCacheMock 
     .Setup(m => m.StringGetAsync(It.IsAny<string>(), It.IsAny<CommandFlags>())) 
     .ReturnsAsync(val); 

    var caching = new CachingInfrastructure(); 
    caching._thirdLevelCache = thirdLevelCacheMock.Object; 

    //Act 
    var actual = await caching.GetKeyAsync("bla", CacheLevel.Any); 

    //Assert 
    Assert.IsNotNull(actual); 
    Assert.AreEqual(expected, actual); 
} 
+0

It.IsAny<string>()を置き換え、それはうまくいきませんでした... – Leonardo

+0

面白い、私が変更した場合、 'ReturnsAsync(val)で'は 'ThrowsAsync(新しい例外()) '私は例外もありません... – Leonardo

+0

" It.IsAny () "の設定で、' It.IsAny () 'の代わりに動作します。 – Leonardo

関連する問題