[c#] Request.CreateResponse के साथ ASP.NET WebApi इकाई परीक्षण



Answers

आप इस तरह की टेस्टेबिलिटी के लिए नियंत्रक ऑब्जेक्ट सेट अप कर सकते हैं:

var config = new HttpConfiguration();
var request = new HttpRequestMessage(HttpMethod.Post, "http://localhost/api/products");
var route = config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
var routeData = new HttpRouteData(route, new HttpRouteValueDictionary { { "controller", "products" } });

controller.ControllerContext = new HttpControllerContext(config, routeData, request);
controller.Request = request;
controller.Request.Properties[HttpPropertyKeys.HttpConfigurationKey] = config;

यूनिट परीक्षण एएसपी.नेट वेब एपीआई पर पीटर प्रोवोस्ट के व्यापक ब्लॉग पोस्ट से कॉपी किया गया।

Question

मैं अपने एपीकंट्रोलर के लिए कुछ यूनिट परीक्षण लिखने की कोशिश कर रहा हूं और कुछ मुद्दों का सामना कर रहा हूं। Request.CreateResponse नामक एक अच्छी एक्सटेंशन विधि है जो प्रतिक्रिया उत्पन्न करने में बहुत मदद करती है।

public HttpResponseMessage Post(Product product)
{
  var createdProduct = repo.Add(product);
  return this.Request.CreateResponse(HttpStatusCode.Created, createdProduct);
}

क्या आंशिक मोक्स का उपयोग किए बिना CreateResponse को नकल करने या "नया HttpResponseMessage (...)" का उपयोग करके सीधे कोई तरीका है?




अपनी टेस्ट क्लास में, नियंत्रक वर्ग का एक उदाहरण बनाएं। उदाहरण के लिए var customerController= new CustomerController();

customerController.Request = new HttpRequestMessage();
customerController.Request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());



Related