我有一个通用方法,如下所示,
public interface IMemoryCacheWithPolicy
{
TItem GetOrCreate<TItem>(object key, Func<TItem> createItem, CacheItemPriority priorityLevel);
}
我正在调用这样的方法,
var materials = _cacheProvider.GetOrCreate("ActiveMaterials",
() => _materialService.GetMaterials(false), CacheItemPriority.Normal);
要对调用类进行单元测试,我如何设置IMemoryCacheWithPolicy的最小起订量,尝试了其他线程中提供的一些建议,但无法使其工作。 以下是我尝试过但没有成功的一些,
_mockCacheProvider.Setup(
x =>
x.GetOrCreate("ActiveMaterials", It.IsAny<Func<IEnumerable<MaterialModel>>>(),
It.IsAny<CacheItemPriority>())).Returns(_allMaterials);
_mockCacheProvider.Setup(
foo =>
foo.GetOrCreate<IEnumerable<MaterialModel>>("ActiveMaterials",
(Func<It.IsAnyType>)It.IsAny<object>(),
It.IsAny<CacheItemPriority>())).Returns(_allMaterials);
让它可以使用以下设置,
_mockCacheProvider.Setup(
cs =>
cs.GetOrCreate(It.Is<object>(k => k.ToString() == key),
It.IsAny<Func<IEnumerable<MaterialModel>>>(),
It.Is<CacheItemPriority>(p => p == CacheItemPriority.Normal))).Returns(
(object k, Func<IEnumerable<MaterialModel>> createFunc,
CacheItemPriority p) => createFunc());