Asp.net 使用业务逻辑和单元测试形成身份验证

Asp.net 使用业务逻辑和单元测试形成身份验证,asp.net,unit-testing,forms-authentication,Asp.net,Unit Testing,Forms Authentication,我的业务类有一个方法“Save”,当调用它时,它应该自动将MyObject.AspNetUserId(guid属性)设置为Membership.GetUser()。ProviderUserKey然后实际执行保存。我写了代码,但是我在单元测试中遇到了一个问题 在我的单元测试中,我有一行“FormsAuthentication.SetAuthCookie”,测试正在中断。我假设这是因为我的单元测试没有在HTTP上下文中运行,所以它实际上无法设置cookie 有没有办法让它工作,或者我只需要在演示站点

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

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

有没有办法让它工作,或者我只需要在演示站点上手动测试它


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

如何针对授权接口编程所有授权调用?这样,您就可以在单元测试期间替换它的实现,并设置调用登录方法的期望

以下是一个例子:

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

如何针对授权接口编程所有授权调用?这样,您就可以在单元测试期间替换它的实现,并设置调用登录方法的期望

以下是一个例子:

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

这是个好主意。在与我公司的另一位开发人员交谈后,我们决定在web项目中设置一个公共属性“ModifiedById”,而不是在我们的业务逻辑层中使用表单身份验证。这是一个好主意。在与我公司的另一位开发人员交谈后,我们决定在web项目中设置一个公共属性“ModifiedById”,而不是在我们的业务逻辑层中使用表单身份验证。