表单身份验证与业务逻辑和单元测试

时间:2011-02-14 23:43:42

标签: asp.net unit-testing forms-authentication

我的业务类有一个方法“保存”,当它被调用时,它应该自动将MyObject.AspNetUserId(一个guid属性)设置为Membership.GetUser()。然后ProviderUserKey实际执行保存。我编写了代码,但我正在测试这个问题。

在我的单元测试中,我有一行“FormsAuthentication.SetAuthCookie”,测试正在进行中。我假设这是因为我的单元测试没有在HTTP上下文中运行,所以它实际上不能设置cookie。

有没有办法让这个工作或我只需要在演示网站上手动测试它?

这是一个非常糟糕的做法,我应该做些别的事吗?这段代码的目标是让我的对象的“CreatedBy”和“EditedBy”属性自动设置,这样程序员就不必每次都记住网站代码。如果有人有更好的方法,我愿意接受各种想法。

1 个答案:

答案 0 :(得分:1)

如何针对授权界面编写所有授权调用?这样,您可以允许在单元测试期间替换其实现,并设置调用login方法的期望。

以下是一个例子:

   public interface IAuthorization
    {
        bool ValidateUser(LoginUser u, string password);
        LoginUser GetCurrentUser();
        void LogIn(LoginUser user);
        void LogOut();
        IIdentity GetCurrentUserIdentity();
    }