我正在使用Moq和MVC3项目以及EF(代码优先)。我目前有一个像这样的Mock设置
(In Repository)
IQueryable<T> FindAll();
IQueryable<T> FindWhere(Expression<Func<T, bool>> predicate);
(In Mock tests)
_providerRepository.Setup(mr => mr.FindById(
It.IsAny<int>())).Returns((int i) => _providerData.Where(
x => x.Id == i).Single());
哪个工作正常,我的问题是什么样的模拟FindWhere(...看起来像?
感谢
答案 0 :(得分:0)
您的代码示例不完整,但我假设_providerRepository
的类型为IRepository<Provider>
。我认为这应该有效(基本上和你的其他例子一样):
_providerRepository
.Setup(mr => mr.FindWhere(It.IsAny<Expression<Func<Provider,bool>>>()))
.Returns(expression => _providerData.AsQueryable().Where(expression))
您可能需要也可能不需要AsQueryable
。