1
我正在重写这个问题,以使其更清楚我需要做什么。我想使用的Rhino模拟测试:如何在EF4中模拟Where子句
public IQueryable<TxRxMode> GetAllModes()
{
return m_context.TxRxModes.Where(txRxMode => txRxMode.Active);
}
下面的代码:
var context = MockRepository.GenerateStub<IProjectContext>();
//Returns an empty list
context.Expect(c => c.TxRxModes.Where(Arg<Func<TxRxMode, bool>>.Is.Anything)).Return(new List<TxRxMode>().AsQueryable());
TxRxModes
在上下文中IObjectSet
财产,我希望它返回一个空IQueryable<TxRxMode
>对象的时候,调用代码return m_context.TxRxModes.Where(txRxMode => txRxMode.Active);
。
当我运行此,该期待方法调用抛出一个ArgumentNullException:
值不能为空。 参数名:谓语
我已经试过简单:
IObjectSet<TxRxMode> modes = MockRepository.GenerateStub<IObjectSet<TxRxMode>>();
context.Expect(c => c.TxRxModes).Return(modes);
但是,这将引发当我打电话
return m_context.TxRxModes.Where(txRxMode => txRxMode.Active);
基本上是一个空引用异常,这是方法,我尝试的一部分嘲笑,所以关键的问题是我如何嘲笑这个Where语句?
关于静态的好处,我错过了。我试图手动模拟IObjectSet接口,现在需要提供一个IQueryProvider对象。需要更多挖掘! – 2010-02-01 11:07:35