Testen WebApi Controller Url.Link

Habe ich folgende controller-action

public void Post(Dto model)
{
    using (var message = new MailMessage())
    {
        var link = Url.Link("ConfirmAccount", new { model.Id });

        message.To.Add(model.ToAddress);
        message.IsBodyHtml = true;
        message.Body = string.Format(@"<p>Click <a href=""{0}"">here</a> to complete your registration.<p><p>You may also copy and paste this link into your browser.</p><p>{0}</p>", link);

        MailClient.Send(message);
    }
}

Um dies zu testen, die ich brauche, um das setup den controller-context

var httpConfiguration = new HttpConfiguration(new HttpRouteCollection { { "ConfirmAccount", new HttpRoute() } });
var httpRouteData = new HttpRouteData(httpConfiguration.Routes.First());
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "http://localhost");
sut = new TheController
{
    ControllerContext = new HttpControllerContext(httpConfiguration, httpRouteData, httpRequestMessage),
    MailClient = new SmtpClient { PickupDirectoryLocation = location }
};

Dies scheint wie eine Menge von setup zu testen, die Erstellung von einem link. Gibt es eine bessere Möglichkeit, dies zu tun? Ich habe gelesen, über in-memory-Server, sondern, wie es aussieht, gilt mehr für die httpclient, der über die Prüfung der Steuerung direkt.

  • +1 ich dachte, der ganze Punkt von REST services ermöglichen linkable Ressourcen. Ich bin wirklich unglücklich mit der WebAPI Link/Url utilities. Die Referenzierung der route name scheint so zerbrechlich und die Tests, die Geschichte ist ebenso schmerzhaft. Hoffentlich gibt es einige Verbesserungen kommen...
Schreibe einen Kommentar