如何对使用 FormsAuthentication 的 ASP.NET MVC 控制器进行单元测试?
我正在以测试驱动的方式使用 ASP.NET MVC 解决方案,并且希望使用表单身份验证将用户登录到我的应用程序。 我希望在控制器中最终得到的代码看起来像这样:
FormsAuthentication.SetAuthCookie(userName, false);
我的问题是如何编写测试来证明此代码的合理性?
有没有办法检查 SetAuthCookie 方法是否使用正确的参数调用?
有什么方法可以注入假/模拟 FormsAuthentication 吗?
I'm working with a ASP.NET MVC solution in a test driven manner and I want to login a user to my application using forms authentication. The code I would like to end up with in the controller looks something like this:
FormsAuthentication.SetAuthCookie(userName, false);
My question is how do I write a test to justify this code?
Is there a way to check that the SetAuthCookie method was called with the correct parameters?
Is there any way of injecting a fake/mock FormsAuthentication?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我将首先编写一个接口和一个包装器类来封装此逻辑,然后在我的控制器中使用该接口:
现在可以在单元测试中轻松模拟 IAuth 并验证控制器是否调用预期的其上的方法。 我不会对
FormsAuthWrapper
类进行单元测试,因为它只是将调用委托给FormsAuthentication
,它会执行它应该执行的操作(微软保证:-))。I would start by writing an interface and a wrapper class that will encapsulate this logic and then use the interface in my controller:
Now
IAuth
could be easily mocked in a unit test and verify that the controller calls the expected methods on it. I would NOT unit test theFormsAuthWrapper
class because it just delegates the call to theFormsAuthentication
which does what it is supposed to do (Microsoft guarantee :-)).