模拟通用存储库单元测试

时间:2016-11-24 18:00:39

标签: c# .net unit-testing mocking rhino-mocks

我正在创建一个单元测试,并且我正在使用犀牛模拟(我以前从未使用任何类型的模拟,(如果你们知道如何使用另一个模拟框架处理它,请给我看一些例子))。

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

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());

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

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

  

值不能为空。   参数名称:source

1 个答案:

答案 0 :(得分:0)

当我将模拟框架更改为Moq时,我解决了我的问题。 所以我可以在模拟设置中使用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);