我正在使用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' –
如果你真的需要模擬任何密封類與自定義的行爲,看看微軟的痣項目。 –