asp.net-mvc – 如何使用Rhino.Mocks模拟ControllerContext
发布时间:2020-12-16 06:43:23 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用Rhino.Mocks来模拟一个ControllerContext对象,以便在我的控制器单元测试中访问运行时对象,如User,Request,Response和Session.我写了下面的方法试图模拟一个控制器. private TestController CreateTestControllerAs(string userName){ var mock
我正在尝试使用Rhino.Mocks来模拟一个ControllerContext对象,以便在我的控制器单元测试中访问运行时对象,如User,Request,Response和Session.我写了下面的方法试图模拟一个控制器.
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为null,我尝试访问HttpContext.User等会导致System.NullReferenceException. 我的嘲笑我做错了什么? 解决方法
我强烈建议你看看使用Rhino.Mocks的
MVCContrib.TestHelper并提供一种优雅的方式来测试你的控制器.以下是您的测试结果:
[TestClass] public class UsersControllerTests : TestControllerBuilder { [TestMethod] public void UsersController_Index() { // arrange // TODO : this initialization part should be externalized // so that it can be reused by other tests var sut = new HomeController(); this.InitializeController(sut); // At this point sut.Request,sut.Response,sut.Session,... are // stubed objects on which you could define expectations. // act var actual = sut.Index(); // assert actual.AssertViewRendered(); } } 这是controller的unit test,这是我写的sample ASP.NET MVC application的一部分. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – vNext. AspNet.Identity和自定义UserStore.
- asp.net-mvc – 我们是否正在使用.Net 3.5中的MVC框架转向经
- ASP.NET MVC3 Razor – 如何有条件地退出或结束或返回或中断
- asp.net – 一个cookie文件的最大大小是多少?
- asp.net – 替代SSRS前端
- asp.net-mvc – Rotativa / Wkhtmltopdf图像无法显示
- asp.net – 连接到源文件XYZ的撤消管理器时出错
- asp.net-core – 从ASP.NET Core MVC Web应用程序(RC2)引用
- 在ASP.NET Core应用中如何设置和获取与执行环境相关的信息?
- asp.net – VSTS Web性能测试 – 以错误的顺序记录的AJAX请