Url.Link मैं नियंत्रक गई कार्रवाई के बाद की हैपरीक्षण WebAPI नियंत्रक
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);
}
}
यह परीक्षण करने के मैं सेटअप करने के लिए नियंत्रक संदर्भ
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 }
};
इस रचना का परीक्षण करने के लिए सेटअप का एक बहुत की तरह लगता है की जरूरत है एक लिंक का क्या ऐसा करने का कोई क्लीनर तरीका है? मैंने इन-मेमोरी सर्वरों के बारे में पढ़ा है लेकिन ऐसा लगता है कि यह सीधे नियंत्रक का परीक्षण करने से httpclient पर अधिक लागू होता है।
+1 मैंने सोचा कि आरईएसटी सेवाओं का पूरा बिंदु लिंक करने योग्य संसाधनों की अनुमति देना था। मैं वेबएपीआई लिंक/यूआरएल यूटिलिटीज से वास्तव में नाखुश हूं। मार्ग के नाम का संदर्भ इतना नाजुक लगता है और परीक्षण की कहानी उतनी ही दर्दनाक है। उम्मीद है कि कुछ सुधार आ रहे हैं ... –