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;之类的扩展方法。不能被嘲笑,应该使用包装器。但这种方法也没有效果,
如果能在这里得到帮助,我将非常感激。
答案 0 :(得分:0)
您返回ISession
,而您的模拟类型为Mock<ISessionLinq>
。如果您将其更改为ISessionLinq
,则应该有效。
public ISessionLinq test()
虽然你必须明白你并没有在这里嘲笑NHibernate,你嘲笑的是你自己的界面ISessionLinq