我对以下问题感到震惊。我正在使用moq来进行MOCK isession ..
以下是我写的代码
static ContainerBuilder BaseSetupForMoq(EmptyInterceptor testInterceptor = null ) {
var containerBuilder = new ContainerBuilder();
{
var testrep= new MockHiber();
containerBuilder.Register(c => testrep.SessionOpen())
.As<ISession>()
.InstancePerRequest();
}
public class MockHiber
{
public ISession SessionOpen()
{
Mock<API.Mock.ISessionLinq> sessionLinq = new Mock<API.Mock.ISessionLinq>();
sessionLinq.Setup(x => x.Query<User>()).Returns(User);
return sessionLinq.Object;
}
}
以下是我用来克服Query扩展方法的包装器。
public interface ISessionLinq :ISession
{
IQueryable<T> Query<T>();
}
public class NHibernateLinqExtension
{
private readonly ISession _session;
public NHibernateLinqExtension(ISession session)
{
_session = session;
}
public IQueryable<T> Query<T>()
{
return _session.Query<T>();
}
}
运行上面的代码我遇到错误NHibernate.SessionException:Session没有打开!