asp.net-mvc – 用Moq Mocking HttpContextBase
|
我有一个单元测试夹具,我试图在ASP.NET MVC控制器上测试一个ControllerAction,该控件用于Web应用程序的成员函数。我试图模拟测试的HttpContext。被测试的ControllerAction实际上设置了HttpContext上的属性,例如Session值,Response.Cookies值等。这不是所有的代码,但是这里是我正试图运行的测试的粗略示例: [Test]
public void ValidRegistrationDataSuccessfullyCreatesAndRegistersUser()
{
var context = new Mock<HttpContextBase>() {DefaultValue = DefaultValue.Mock};
context.SetupAllProperties();
var provider = new Mock<MembershipProvider>(new object[] {context.Object});
var controller = new AccountController(context.Object,provider.Object);
// This just sets up a local FormCollection object with valid user data
// in it to use to attempt the registration
InitializeValidFormData();
ActionResult result = controller.Register(_registrationData);
Assert.IsInstanceOfType(typeof(ViewResult),result);
// Here is where I'd like to attempt to do Assertions against properties
// of the HttpContext,like ensuring that a Session object called "User"
// exists,and new auth cookie exists on the Response.Cookies collection.
// So far I've been unable to successfully check the values of those properties.
// I've been unsuccessful in getting those properties setup correctly on my
// mock object so that my ControllerAction can actually *set* their values,// and that I can make assertions on them afterwards. The above code actually
// generates a StackOverflowException (which I've reported) on the
// context.SetupAllProperties() call. What am I doing wrong,or what do I need
// to do to be able to set and assert on those context properties?
}
不知道我在做错了什么,但是如果有人能指出正确的方向,我会很喜欢它,并告诉我如何设置这个模拟HttpContextBase对象,使得我的控制器实际上可以在其属性上设置值,我可以断言这些属性,以确保我的ControllerAction正在做我需要的。 我接近这个错误的方式吗?我知道MVC控制器有一个ControllerContext,可以用来为Session等设置值,但是我无法确定如何在没有注入的情况下嘲笑它。有办法吗? (我也需要能够将上下文传递给我的MembershipProvider)这会是一个更好的方法吗? 谢谢。 解决方法我正在使用一些史蒂夫·桑德森(Steve Sanderson)在他的 Pro Asp.NET MVC book中包含的一些代码,而且我目前正面临道德上的困境,无论是否在这里发布代码。我如何妥协与高度精简的版本?(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-web-api – 无法使MVC4 WebApi包含JSON中的空字段
- asp.net – 禁用按钮但看起来很活跃
- ASP.NET Web应用程序 – WebResource.axd和ScriptResource.
- asp.net-mvc – 为Cascade子列表构建一个空的MVC DropdownL
- ASP.NET JSON字符串与实体类的互转换示例代码
- asp.net-mvc – 实体框架SQLite部署
- asp.net – 在新的MVC4应用程序中获取UserId(int)
- asp.net-mvc – 如何使用Html.DropDownList为默认选项设置值
- asp.net – 使PDF显示内联而不是单独的Acrobat Reader窗口
- asp.net-mvc – MVC:如何将文件上传和其他表单字段发布到一
- asp.net-mvc – 如何在ASP.NET MVC中定义表单域前
- 动态背景图像(ASP.NET)
- asp.net-mvc – 如何单元测试HtmlHelper与Moq?
- 如何使用ASP.NET Repeater删除尾随逗号?
- asp.net-core-mvc – MVC6路由到单页面应用程序而
- asp.net – 为什么不能通过IIS7中的web.config删
- ASP.NET Dropdownlist selectedindexchanged事件
- asp.net – 如何添加jQuery UI按钮图标到输入按钮
- asp.net-mvc – Identity Server 3 – 客户端应用
- iis-7 – IIS重置会强制缓存项目重新发送吗?
