Посмотрите на этот код:Moq Возвращает метод не работает, как ожидалось
var thirdLevelCacheMock = new Mock<IDatabase>();
RedisValue val = "not empty or null string";
thirdLevelCacheMock.Setup(m => m.StringGetAsync(It.IsAny<string>(), It.IsAny<CommandFlags>())).Returns(Task.FromResult(val));
CachingInfrastructure caching = new CachingInfrastructure();
caching._thirdLevelCache = thirdLevelCacheMock.Object;
var operation = caching.GetKeyAsync("bla", CacheLevel.Any);
Assert.DoesNotThrow(() => { operation.Wait(); });
Assert.IsNotNull(operation.Result);
Как вы можете заметить, я устанавливаю возвращение StringGetAsync
к простой не пустой/пустая строка.
Моя проблема заключается в том, что внутри caching.GetKeyAsync
вызов этого метода возвращает нулевой результат. Что я здесь делаю неправильно?
Код для GetKeyAsync:
result = _thirdLevelCache.StringGetAsync(key, CommandFlags.None).ContinueWith((prev) =>
{
string res = null;
if (!prev.Result.IsNull)
{
res = prev.Result.ToString();
}
return res as object;
});
извините за задержку, но это не сработало ... – Leonardo
смешно, если я изменить 'ReturnsAsync (VAL)' 'для ThrowsAsync (новый Exception()) 'Я тоже не получаю исключение ... – Leonardo
Мне удалось заставить его работать, заменяя установку' It.IsAny() ', для" It.IsAny () "... –
Leonardo