nak*_*iya 3 c# nhibernate rhino-mocks
我有以下代码,我尝试存根ISession.Query<UnitModel>().
var unitList = new List<UnitModel>()
{
new UnitModel(){Name = "meters", Symbol="m"},
new UnitModel(){Name="grams", Symbol="g"}
};
MockRepository.GenerateMock<ISession>().Stub(x => x.Query<UnitModel>()).Return(unitList.AsQueryable<UnitModel>());
Run Code Online (Sandbox Code Playgroud)
运行时,会抛出异常:
System.InvalidOperationException : Type 'System.Linq.EnumerableQuery`1[[MIB.DomainModels.UnitModel, MIB, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' doesn't match the return type 'NHibernate.Engine.ISessionImplementor' for method 'ISession.GetSessionImplementation();'
Run Code Online (Sandbox Code Playgroud)
我在这做错了什么?我应该怎么去捣蛋ISession.Query<UnitModel>()?
NHibernate 3.3.0.4000
编辑:
UnitModel课程:
public class UnitModel
{
public virtual string Name { get; set; }
public virtual string Symbol { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
模拟ISession通常是昂贵和痛苦的.
Query<T>特别是,是一个ISession.GetSessionImplementation()内部调用的扩展方法,所以你必须模拟它来使用它(这是非常重要的,实际上将你绑定到一个特定的实现细节)
有两个更好的选择:
除非您已经在使用存储库,否则我的建议是使用#2.
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |