模拟深层方法

时间:2017-03-31 17:41:08

标签: c# asp.net-core moq

我正在使用Moq来模拟我的应用程序的一些对象,而现在,我需要模拟这个调用:

accessor.HttpContext.Session.GetInt32("offset");

我试图这样做,但不起作用:

var mock = new Mock<HttpContextAccessor>();
        mock.Setup(x => x.HttpContext.Session.GetInt32("offset"))
            .Returns(0);

它会触发此错误:

  

System.NotSupportedException:Expression引用不属于模拟对象的方法:x =&gt; x.HttpContext.Session.GetInt32( “偏移”)

1 个答案:

答案 0 :(得分:2)

GetInt32是一种在ISession界面上运行的扩展方法。您需要模拟ISession接口,以便TryGetValue方法返回预期值GetInt32调用Get,在TryGetValue上调用ISession接口)然后从HttpContext.Session

返回模拟