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
您能否提供您正在收到的异常消息/详细信息? –