Asp.net mvc 模拟FormsAuthentication.Authenticate()方法

Asp.net mvc 模拟FormsAuthentication.Authenticate()方法,asp.net-mvc,forms-authentication,rhino-mocks,Asp.net Mvc,Forms Authentication,Rhino Mocks,有什么方法可以用测试凭证模拟FormsAuthentication.Authentication(“用户名”、“密码”)方法吗?我的测试目标是确保如果身份验证失败,它会重定向到正确的位置。我使用Rhino Mock作为模拟框架 非常感谢您的帮助,我不使用Rhino mock,但我认为除了typemock之外,任何.Net模拟框架都不可能模拟静态方法。最好的解决方法是在其周围创建一个接口适配器。因为您使用的是mvc,如果您创建一个新项目并查看帐户控制器的代码,您将发现以下说明: 表单的身份验证类型

有什么方法可以用测试凭证模拟FormsAuthentication.Authentication(“用户名”、“密码”)方法吗?我的测试目标是确保如果身份验证失败,它会重定向到正确的位置。我使用Rhino Mock作为模拟框架


非常感谢您的帮助,

我不使用Rhino mock,但我认为除了typemock之外,任何.Net模拟框架都不可能模拟静态方法。最好的解决方法是在其周围创建一个接口适配器。

因为您使用的是mvc,如果您创建一个新项目并查看帐户控制器的代码,您将发现以下说明:

表单的身份验证类型是密封的 并且包含静态成员,因此 很难对调用 其成员。接口和助手 下面的类演示如何创建 这种类型的抽象包装器 为了使AccountController 代码单元可测试

以下是这些声明:

public interface IFormsAuthentication
public class FormsAuthenticationService : IFormsAuthentication
public interface IMembershipService
public class AccountMembershipService : IMembershipService
您可以在引用的代码中查找实现