GetOrAddAsyncという名前の関数をモックしようとしています。だから、基本的にキーは、それが作成しますそれには何が戻っている場合はありませんが存在する場合LazyCacheを使ったMoqとAsync fun
DateTimeOffset cacheTimeout = new DateTimeOffset(DateTime.Now.AddHours(config.CacheHours));
Func<Task<IEnumerable<int>>> func = async() => await (from s in dbContext.Names select s.First).ToListAsync();
return await cache.GetOrAddAsync(key, func, cacheTimeout);
:私はのように私はそれを使用する私の実際のコードでそれを使用する場合
Task<T> GetOrAddAsync<T>(string key, Func<Task<T>> addItemFactory, DateTimeOffset expires);
:それは次のように定義されていますFunc <>のキーから返されたデータでキーを埋めてください。これまでの
私のモックの試みは次のとおりです。ただし、これはエラーを返して
cache.Setup(x => x.GetOrAddAsync(It.IsAny<string>(), It.IsAny<Func<Task<IEnumerable<int>>>>(), It.IsAny<DateTimeOffset>()))
.ReturnsAsync(async (string key, Func<Task<IEnumerable<int>>> func, DateTimeOffset policy) =>
{
return await func.Invoke();
});
:それはデリゲート型ではないので
は「IEnumerableを」と入力するラムダ式を変換できません。 。
私の心はこの構文:)
私はとても近かった:)。ありがとうございました! – user441521