2013-09-16 47 views
0

我想單元測試,與內置的Visual Studio測試工具,使用FormsAuthentication.SetAuthCookie(字符串,布爾)的控制器操作設置窗體身份驗證一個用戶。問題是,當我調用它時,我得到一個NullReferenceException。調用中的對象都不爲null,所以異常必須與該方法嘗試使用的其他內容相關。WebSecurity.Login中的NullReferenceException FormsAuthentications.SetAuthCookie當單元測試

我已經嘲笑(使用Moq)ControllerContext爲了解決一些其他值。但是,我不知道我可以嘲弄SetAuthCookie的工作方式(如果有的話)。

的SetAuthCookie(字符串,布爾值)的方法是通過WebSecurity.Login(字符串,字符串,布爾)方法

回答

0

稱爲不幸的是,方法是靜態的,而不是mockable。但是,您可以將其包裝在某種接口並進行測試的服務中。

public interface IAuthenticationService 
{ 
    void SetAuthCookie(string userName, bool createPersistentCookie); 
) 

public class AuthenticationService : IAuthenticationService 
{ 
    public void SetAuthCookie(string userName, bool createPersistentCookie) 
    { 
     FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); 
    } 
} 

所以現在你可以在你的控制器和測試有一個IAuthenticationServiceSetAuthCookie方法被調用時,它應該是。

相關問題