如何模拟Nhibernate.ISession查询<t>

时间:2017-02-26 07:55:34

标签: c# nhibernate moq

static ContainerBuilder BaseSetupForMoq(EmptyInterceptor testInterceptor = null )
    {

        var containerBuilder = new ContainerBuilder();

        {

     var testrep= new MockHiber();

            containerBuilder.Register(c => testrep.SessionOpen())
                .As<ISession>()
                .InstancePerRequest();
        }
public ISession SessionOpen()
    {

        var session= new Mock<ISession>();
        session.Setup(x => x.Query<User>()).Returns(User);
        return session.Object;
    }

代码行'session.Setup(x =&gt; x.Query())。返回(User);'投掷错误 表达式引用不属于模拟对象的方法:x =&gt; x.Query()

现在我已经研究并发现了诸如Query&lt;&gt;之类的扩展方法。不能被嘲笑,应该使用包装器。但这种方法也没有效果,

如果能在这里得到帮助,我将非常感激。

1 个答案:

答案 0 :(得分:0)

您返回ISession,而您的模拟类型为Mock<ISessionLinq>。如果您将其更改为ISessionLinq,则应该有效。

public ISessionLinq test()

虽然你必须明白你并没有在这里嘲笑NHibernate,你嘲笑的是你自己的界面ISessionLinq