Frage

Ich habe eine Methode, die in einem DotNetOpenAuth (formal als DotNetOpenId bekannt) Response Objekt. Meine Methode extrahiert prüft jede beansprucht Daten, um zu sehen, wenn der User in unserem System vorhanden ist, bla bla bla ... und wann kehrt die geauthet Benutzerinstanz abgeschlossen.

Nun .. wie kann ich verwenden moq diese Antwort Objekt zu verspotten, meine Authentifizierungsmethode zu testen (AuthenticateUser())?

switch (response.Status)
{
    case AuthenticationStatus.Authenticated:

    User user = null;
    try
    {
        // Extract the claimed information and 
        // check if this user is valid, etc.
        // Any errors with be thrown as Authentication Errors.
        user = _authenticationService.AuthenticateUser(response) as User;
    }
    catch (AuthenticationException exception)
    {
        ViewData.ModelState.AddModelError("AuthenticationError", exception);
    }

    .. other code, like forms auth, other response.status' etc. ..
}

Mockframework: moq
Sprache: C # .NET 3.5 sp1
Response-Objekt: genommen aus dem DotNetOpenAuth Rahmen

War es hilfreich?

Lösung

Ich bin nicht vertraut mit Moq insbesondere, aber die Antwortobjekt ist ein Typ, der DotNetOpenAuth.OpenId.RelyingParty.IAuthenticationResponse implementiert, so kann es leicht durch die Schaffung einer Klasse verspottet werden, die die gleiche Schnittstelle implementiert und ist bereit, die gleichen Arten von Werten zurückzukehren.

... heruntergeladen nur Moq und ein IAuthenticationResponse wie so verspottet:

var response = new Mock<IAuthenticationResponse>(MockBehavior.Loose);
response.SetupGet(r => r.ClaimedIdentifier)
        .Returns("http://blog.nerdbank.net/");
response.SetupGet(r => r.Status)
        .Returns(AuthenticationStatus.Authenticated);
response.SetupGet(r => r.FriendlyIdentifierForDisplay)
        .Returns("blog.nerdbank.net");

IAuthenticationResponse resp = response.Object;
Console.WriteLine(resp.ClaimedIdentifier);

Offensichtlich nicht das Ergebnis senden Console.WriteLine Sie das resp Objekt an die Methode übergeben wollen Sie testen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top