- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 ASP.NET MVC4 应用程序中进行测试。我正在开发的应用程序部分将现代 WebSecurity/SimpleMembershipProvider 与正在逐步淘汰的遗留身份验证系统相结合。 我很乐意对此进行适当的单元测试,但出于实际原因,我选择不模拟或 stub WebSecurity;我只是将它指向一个测试数据库。*
使用 NUnit,我想为一系列测试设置 WebSecurity,使用 WebSecurity.InitializeDatabaseConnection()
方法。此方法旨在仅运行一次,最好在应用程序启动时运行。
我想隔离我的测试,删除数据库并在每次测试之前调用 InitializeDatabaseConnection
(即在 [Setup]
方法中)。但是,WebSecurity 静态维护其 Initialized 状态,这意味着如果它在同一应用程序实例中运行多次,则会抛出异常。
换句话说,只有我的第一个测试有效;随后的抛出异常:
System.InvalidOperationException : The "WebSecurity.InitializeDatabaseConnection" method can be called only once.
有什么方法可以“取消初始化”WebSecurity,以便我可以在单个应用程序实例中多次初始化它?或者,有没有办法指示 NUnit 应该在特定夹具中的每次测试之前重启应用程序?
我试过在 [TestFixtureSetup]
方法或 [SetUpFixture]
中调用一次 WebSecurity.InitializeDatabaseConnection()
然后删除测试之间的相关表格,但我真的更喜欢有保证的干净状态。此外,这种方法有一个不幸的副作用:如果我想使用 NUnit GUI 按顺序运行一些测试,然后按顺序运行更多测试,我必须在序列之间重新加载程序集。 GUI 每个测试序列运行一次这些设置方法,但显然会保持相同的应用程序实例,直到重新加载程序集。
* 毕竟我决定模拟 WebSecurity;请参阅下面我的 self 回答。
最佳答案
我说过我选择不模拟或 stub WebSecurity,但这是解决此问题的可能方法。我可以使用调用 WebSecurity 方法的实例方法创建一个名为 WebSecurityWrapper 的类,而不是正确调用 WebSecurity 的静态方法。
然后我的单元测试可以传入一个模拟的 WebSecurityWrapper(使用 moq 制作),它的行为与我希望的一样。尝试模拟静态类没有问题(因为 WebSecurityWrapper 是非静态的)。无需为 SimpleMembership 设置数据库。
在遇到与 FormsAuthentication cookie 相关的其他问题并且没有更好的答案后,我选择继续使用这种模拟方法。
关于c# - 单元测试时我怎么能 "uninitialize"WebSecurity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14346393/
每次我用 Visual Studio 重新启动调试时,我都会收到这个奇怪的错误: You must call the "WebSecurity.InitializeDatabaseConnection
除了 AccountController.cs 文件中已经生成的内容,我无法让 WebSecurity 对象在任何地方工作。帐户 Controller 有 [InitializeSimpleMembe
当我们选择New Project --> MVC 4 --> Internet Application ,它会自动为我们生成AccountController。在这个 Controller 中,我只关
我在 MSSQL 中完成了一个项目。我将 MSSQL 迁移到 MySql,因为我认为 Webmatrix.WebData 也将支持 MySql。 WebSecurity 初始化成功。 if (!Web
我有一个连接到多个数据库的 c# mvc.net 应用程序。澄清一下,基于 url 的子域,应用程序将连接到特定的数据库。这是通过将 web.config 中的 defaultConnectionFa
在一个测试项目中,我使用的是 SimpleMembershipProvider 和 Entity Framework 5。测试项目使用 localdb 创建了一个数据库,但它突然停止工作了。我不确定发
我的情况 我正在 ASP.NET MVC4 应用程序中进行测试。我正在开发的应用程序部分将现代 WebSecurity/SimpleMembershipProvider 与正在逐步淘汰的遗留身份验证系
我创建了一个过滤器,在过滤器 super 构造函数中它需要一个 defaultFilterProcessesUrl。我通过 url /v1/** 选择了所有请求。 我需要不登录 /v1/users (
在我的项目中,我使用 WebSecurity 和 EF 代码优先迁移。 我有我的自定义 UserProfile 类,我想将其与 WebSecurity 结合。 我想在 Seed 方法的迁移配置类中为用
这可能是个愚蠢的问题,但我在 Google 上搜索得很辛苦,却找不到答案。 我正在创建一个数据库位于另一个大陆的网站,因此速度是一个至关重要的问题。 据我了解, WebSecurity.Login(
我正在编写一个 mvc 4 c# .net 4.5 网站 我想创建一个新的公司对象并注册一个链接到该公司的新用户。 我的账户模型是: [Table("UserProfile")] pu
我正在使用 WebMatrix 并建立了一个基于“StarterSite”的网站。在这个入门站点中,您将获得一个不错的基本布局 - 包括注册、登录、忘记密码页面等... 我注意到在数据库中“webpa
我正在使用 SimpleMembership ( http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.
对我在使用 WebSecurity 时遇到的所有奇怪异常感到有点失望。此外,与 OAuth 的糟糕集成并没有让它看起来更漂亮。考虑放弃这个概念并手动编写整个用户管理...... 无论如何,我正在使用
*You must call the "WebSecurity.InitializeDatabaseConnection" method before you call any other metho
我正在尝试扩展简单成员资格以包括名字、第二名和电子邮件地址,但是我在使用 CreateUserAndAccount 时遇到了一些问题。 所以基本上在 RegisterModel 中我添加了以下内容:-
我在我的 Spring 4 MVC + Security + Boot 项目中设置了一个自定义身份验证过滤器。过滤器的工作很好,现在我想禁用某些 URI 的安全性(如 /api/**)。这是我的配置:
我正在 Visual Studio 的示例 Web 应用程序中探索 ASP.NET MVC 的可能性 WebMatrix.WebData.WebSecurity 用于成员资格(创建帐户,并指定用户登录
在我基于版本 1.3.0.BUILD-SNAPSHOT 的 Spring Boot 应用程序中,我在 中有静态资源(图像、css、js) resources 下的 static 文件夹。 我看到了一些
谁能解释一下何时覆盖 configure(HttpSecurity)、configure(WebSecurity) 和 configure(AuthenticationManagerBuilder)?
我是一名优秀的程序员,十分优秀!