我想用Rhino.Mocks
來模擬ControllerContext
對象,以便在我的控制器單元測試中訪問像User,Request,Response和Session這樣的運行時對象。我已經寫了下面的方法來模擬控制器。如何使用Rhino.Mocks來模擬ControllerContext
private TestController CreateTestControllerAs(string userName)
{
var mock = MockRepository.GenerateStub<ControllerContext>();
mock.Stub(con =>
con.HttpContext.User.Identity.Name).Return(userName);
mock.Stub(con =>
con.HttpContext.Request.IsAuthenticated).Return(true);
var controller = CreateTestController(); // left out of example for brevity
controller.ControllerContext = mock;
return controller;
}
但是,我嘲笑ControllerContext的HttpContext
爲空,有我嘗試訪問HttpContext.User
等引起System.NullReferenceException
。
我在做什麼錯誤與我的嘲笑?
這工作得很好。仍然必須將一個對象放在'HttpContext.User'屬性中,但這很容易通過執行:'HttpContext.User = new GenericPrincipal(new GenericIdentity(loginName),null);' – ahsteele 2010-06-21 03:16:49