我如何使用Moq作为FindWhere方法?

时间:2012-07-27 04:46:07

标签: c# moq

我正在使用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(...看起来像?

感谢

1 个答案:

答案 0 :(得分:0)

您的代码示例不完整,但我假设_providerRepository的类型为IRepository<Provider>。我认为这应该有效(基本上和你的其他例子一样):

_providerRepository
   .Setup(mr => mr.FindWhere(It.IsAny<Expression<Func<Provider,bool>>>()))
   .Returns(expression => _providerData.AsQueryable().Where(expression))

您可能需要也可能不需要AsQueryable