我正在使用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( “偏移”)
答案 0 :(得分:2)
GetInt32是一种在ISession
界面上运行的扩展方法。您需要模拟ISession
接口,以便TryGetValue
方法返回预期值GetInt32
调用Get
,在TryGetValue
上调用ISession
接口)然后从HttpContext.Session