Moq存儲庫設置FindBy方法Im新moq並一直在努力滿足以下要求。使用Func <>
我曾嘲笑稱爲_mockedThingsList
列表清單,我想我的起訂量的IRepository的FindBy從基於我的服務,正在測試中提供的LINQ查詢嘲笑這個列表中返回。
我現在有什麼引發異常,如下所示。請問有什麼不對?
mock.Setup(moq => moq.FindBy(It.IsAny<Func<IThing, bool>>()))
.Returns((enumThingType tp) => _mockedThingsList.Where(x => x.ThingType == tp));
的倉庫界面看起來像:
interface IRepository<T>
{
IEnumerable<T> FindAll();
IEnumerable<T> FindBy(Func<T, bool> predicate);
void Add(T item);
void Remove(T item);
bool Contains(T item);
int Count { get; }
}
這將這個模擬
class ThingService
{
private readonly IRepository<IThing> _repository;
public ThingService(IRepository<IThing> repository)
{
_repository = repository;
}
public List<IThing> GetThings1()
{
return _repository.FindBy(y => y.ThingType == enumThingType.WhatEver).ToList();
}
public List<IThing> GetThings2()
{
return _repository.FindBy(y => y.Name == "What ever").ToList();
}
}
你在掙扎,因爲你正在測試值而不是契約。如果你想測試值,使用假。 –
對不起,我新來的Moq和林不知道你的意思。你能否詳細說明一下? mayeb舉一個快速的例子? – John
您能否提供您正在收到的異常消息/詳細信息? –