Wie moq ich dieses Objekt DotNetOpenAuth Antwort?
-
03-07-2019 - |
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
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.