2009-06-09 5 views
1

私はアカウントコントローラーのコンストラクターが私のカスタムIOpenIdAuthenticationインターフェイスから派生したオブジェクトを取ります。既定では、OpenIdAuthenticationServiceオブジェクトは、OpenIdRelyingPartyをラップします。インターフェースは次のようになります。DotNetOpenIdを使用するASP.NET MVCコントローラを単体テストする方法を教えてください。

public interface IOpenIdAuthentication { 
    IAuthenticationResponse Response { get; } 
    IAuthenticationRequest CreateRequest(string identifier); 
} 

私はIAuthenticationResponseを模擬することができます

_mockResponse = new Mock<IAuthenticationResponse>(MockBehavior.Loose); 
_mockResponse.SetupGet(r => r.ClaimedIdentifier).Returns(identifier); 
_mockResponse.SetupGet(r => r.Status) 
    .Returns(AuthenticationStatus.Authenticated); 
// ... removed the formatting of 'friendlyId' ... 
_mockResponse.SetupGet(r => r.FriendlyIdentifierForDisplay).Returns(friendlyId); 

しかし、私はそれがはるかに複雑現れるようIAuthenticationRequestを模擬するかどうかはわかりません。何か案は?

答えて

1

それほど複雑ではありません。認証だけをしている場合、RedirectToProvider()を嘲笑するだけで十分です。最も単純なケースでは、それは次のようになります。

_mockRequest = new Mock<IAuthenticationRequest>(MockBehavior.Strict); 
_mockRequest.Setup(r => r.RedirectToProvider()); 

希望これは

+0

ああ、感謝を助けます!以前は嘲笑的なフレームワークを使っていませんでしたので、オブジェクトのすべての部分をモックする必要があるかどうかはわかりませんでした。 –

+0

Moqを初めて使う人は、MockBehavior.LooseとMockBehavior.Strictの違いに注意してください。また、Moqライブラリには多くの自動モック機能があります。 –