2011-02-14 109 views
1

我的业务类有一个方法“保存”,当它被调用时它应该自动设置MyObject.AspNetUserId(一个guid属性)为Membership.GetUser()。然后ProviderUserKey实际执行保存。我写了代码,但我有一个问题单元测试它。表单身份验证业务逻辑和单元测试

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

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

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

回答

1

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

下面是一个例子:

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

这是一个好主意。在与我公司的另一位开发人员交谈之后,我们决定只在Web项目中设置一个公用属性“ModifiedById”,而不是在业务逻辑层中使用表单身份验证。 – William 2011-03-04 22:19:34