В методе, который я тестирую, есть этот бит кода:
var devices = await _cache.GetOrAddAsync(_cacheKey, AddItemFactory, DateTimeOffset.Now.AddMinutes(Configuration.DeviceInMinutes));`
Где _cache
- это IAppCache
и в тесте
имитируется
new Mock<IAppCache>();
AddItemFactory имеет следующую подпись:
private async Task<IDictionary<int, Device>> AddItemFactory()
В моем тесте я написал:
_appCache.Setup(x => x.GetOrAddAsync(
It.IsAny<string>(),
It.IsAny<Func<Task<IDictionary<int, Device>>>>(),
It.IsAny<DateTimeOffset>())
).ReturnsAsync(fakeDictionary);
Когда этот .Setup будет оценен, мой тест завершится со следующей ошибкой:
System.NotSupportedException : Invalid setup on an extension method: x => x.GetOrAddAsync<IDictionary<int, Device>>(It.IsAny<string>(), It.IsAny<Func<Task<IDictionary<int, Device>>>>(), It.IsAny<DateTimeOffset>())
Я думаю, что это издевается правильно, потому что IntelliSense Visual Studio не жалуется и подписи неправильно, но я не понимаю, что происходит.