我正在创建一个单元测试,并且我正在使用犀牛模拟(我以前从未使用任何类型的模拟,(如果你们知道如何使用另一个模拟框架处理它,请给我看一些例子))。
在我的场景中,我试图模拟以下通用存储库
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
答案 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);