次のメソッドを使用してインターフェイスを作成しました。
Public Interface IAuthenticationService
Sub SetAuthentication(ByVal username As String)
Sub Logout()
Function IsLoggedIn() As Boolean
End Interface
私の実装は次のようになります。
Public Class Authentication
Implements IAuthenticationService
Public Sub Logout() Implements IAuthenticationService.Logout
FormsAuthentication.SignOut()
LoggedIn = False
End Sub
Public Sub SetAuthentication(ByVal username As String) Implements IAuthenticationService.SetAuthentication
FormsAuthentication.SetAuthCookie(username, True)
LoggedIn = True
End Sub
Public Function IsLoggedIn() As Boolean Implements IAuthenticationService.IsLoggedIn
If LoggedIn Then Return True
Return False
End Function
Private _isLoggedIn As Boolean = false
Public Property LoggedIn() As Boolean
Get
Return _isLoggedIn
End Get
Set(ByVal value As Boolean)
_isLoggedIn = value
End Set
End Property
End Class
私のコントローラ クラスには、FormsAuthentication にチケットを設定するアクションがあります。
Public Function Login(ByVal username As String, ByVal password As String) As ActionResult
_authenticationService.SetAuthentication(username)
Return View()
End Function
私の質問は、認証サービス クラスで FormsAuthentication をテストする方法です。テストを書くために Xunit/Moq を使用しています。アクションを呼び出すと、「System.NullReferenceException : オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示され、FormsAuthentication オブジェクトが Null であるため、認証チケットを設定できないことがわかります。これを解決するための最良の解決策は何ですか。いくつかのコード例や、インスピレーションを得ることができる場所への参照があればうれしいです。特に解決策が嘲笑されている場合...