У меня есть AccountController, конструктор которого берет объект, полученный из моего пользовательского интерфейса IOpenIdAuthentication. По умолчанию это объект OpenIdAuthenticationService, который обертывает OpenIdRelyingParty. Интерфейс выглядит следующим образом:Как я могу протестировать контроллер ASP.NET MVC, который использует DotNetOpenId?
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, как представляется, гораздо сложнее. Есть идеи?
Ах, спасибо! Раньше я не использовал насмешливую структуру, поэтому я не был уверен, что мне пришлось издеваться над каждой частью объекта. –
Если вы новичок в Moq, обратите внимание на разницу между MockBehavior.Loose и MockBehavior.Strict. И в библиотеке Moq есть много автоматических издевательств. –