0

我将 Moq 与 MVC3 项目和 EF(代码优先)一起使用。我目前有一个像这样的模拟设置

    (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(.. 的示例 Mock 是什么样的?

谢谢

4

1 回答 1

0

您的代码示例不完整,但我假设它_providerRepository的类型为IRepository<Provider>. 我认为这应该有效(基本上与您的其他示例相同):

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

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

于 2012-07-27T07:09:02.460 回答