我正在使用moq测试我的控制器。将模拟参数传递给模拟接口
我使用一个会话类,它有一个接口,并使用ninject将HttpContext注入到构造函数中。 这样
public class SessionService : ISession
{
public HttpContext Context { get; set; }
public SessionService(HttpContext context)
{
this.Context = context;
}
}
public interface ISession
{
HttpContext Context { get; set; }
}
public HomeController(ISession session)
{
_session = session;
}
我认为,为了测试我已经第一嘲笑的HttpContext控制器,然后该对象传递到嘲笑的ISession的所述construtor。 我有这到目前为止
[Test]
public void index_returns_view()
{
//arrange
var mockHttpContext = new Mock<HttpContext>();
var mockContext = new Mock<ISession>(mockHttpContext);
var c = new HomeController(mockContext.Object);
//act
var v = c.Index() as ViewResult;
//assert
Assert.AreEqual(v.ViewName, "Index", "Index View name incorrect");
}
它建立但NUnit的返回时在测试运行
System.NotSupportedException以下错误:类型嘲笑必须是一个接口或抽象的或不密封类。
感谢您的帮助。
直视'HttpContextBase' –
如果你真的需要模拟任何密封类与自定义的行为,看看微软的痣项目。 –