模拟通用存储库单元测试

Mocking Generic Repository unit test

我正在创建一个单元测试并且我正在使用 rhino 模拟(我以前从未使用过任何类型的模拟,(如果你们知道如何使用另一个模拟框架来处理它,请告诉我一些他们的例子)).

在我的场景中,我试图模拟以下通用存储库

public interface Repository
{
  IEnumerable<TEntity> Search(Expression<Func<TEntity, bool>> filter = null,
    Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> order = null);
}

我的单元测试:

 _classRepository.Stub(x => x.Search(myclass =>
                             myclass.id == 1 &&
                            ).Return(arrayClass.AsQueryable());

数组class只有一个id为1的寄存器

当我 运行 我的测试时,我收到以下消息:

Value cannot be null. Parameter name: source

我将模拟框架更改为最小起订量时解决了我的问题。 所以我可以在我的模拟设置中使用 lambda 表达式。

_myclassRepository.Setup(x => x.Search(
          myclass => myclass.id == 1,
          It.IsAny<Func<IQueryable<MyClass>, IOrderedQueryable<MyClass>>>(),
          It.IsAny<string>(),
          It.IsAny<int>())).Returns(arrMyClass);