2012-07-08 23 views
8

में यूनिट टेस्ट कस्टम रूट किसी भी सफलता के बिना मैंने पहले से ही आधा दिन बिताया है। आप वेब एपीआई में यूनिट परीक्षण मार्ग कैसे करते हैं?वेब एपीआई

मैं निम्नलिखित यूआरआई दिया मतलब:

~/Test/Get/2 

मुझे लगता है कि इसके बाद के संस्करण यूआरएल टेस्ट नियंत्रक द्वारा कब्जा कर लिया और एक पूर्णांक पैरामीटर को स्वीकार कार्रवाई प्राप्त है इकाई परीक्षण करना चाहते हैं।

+0

उपयोगी हो सकता है? http://stackoverflow.com/questions/10446174/httpclient-with-asp-net-webapi-in-unit-testing-scenario –

+0

और यह: http://www.peterprovost.org/blog/2012/06/16/यूनिट-परीक्षण-एएसपी-डॉट-नेट-वेब-एपीआई/ –

+0

आप NuGet पैकेज MvcRouteUnitTester (बहुत आसान काम करता है) का उपयोग करने का प्रयास कर सकते हैं http://nuget.org/packages/MvcRouteUnitTester – Styxxy

उत्तर

0

यह वह जगह है मैं क्या किया था, मुझे पता है आप क्या सोचते हैं

[Test] 
public void Should_be_able_to_route_to_gettables_action_in_databaseschemaexplorercontroller() 
{ 
    const string url = "~/DatabaseSchemaExplorer/Tables/DatabaseType/Provider/DataSource/DatabaseName"; 

    _httpContextMock.Expect(c => c.Request.AppRelativeCurrentExecutionFilePath).Return(url); 

    var routeData = _routes.GetRouteData(_httpContextMock); 

    Assert.IsNotNull(routeData, "Should have found the route"); 
    Assert.AreEqual("DatabaseSchemaExplorer", routeData.Values["Controller"]); 
    Assert.AreEqual("Tables", routeData.Values["action"]); 
    Assert.AreEqual("DatabaseType", routeData.Values["databaseType"]); 
    Assert.AreEqual("Provider", routeData.Values["provider"]); 
    Assert.AreEqual("DataSource", routeData.Values["dataSource"]); 
    Assert.AreEqual("DatabaseName", routeData.Values["databaseName"]); 
} 
+0

क्या आप अपना मॉक कोड पोस्ट कर सकते हैं '_httpContexMock' और' _routes'? मैं एक ही मुद्दे पर काम कर रहा हूं और इस सवाल से पूछा: http://stackoverflow.com/q/11851558/61654। – ahsteele

1

मैं कैसे संबंधित सवाल में वेब एपीआई मार्गों का परीक्षण करने के लिए तैयार के लिए उपयोग उदाहरण वर्णित कृपया: Testing route configuration in ASP.NET WebApi

3

मार्गों के परीक्षण के लिए, मैं एक पुस्तकालय के साथ दावे मदद करने के लिए बनाया है - MyWebApi:

: https://github.com/ivaylokenov/MyWebApi

मूल रूप से, आप निम्न कर सकते

MyWebApi 
    .Routes() 
    .ShouldMap(“api/WebApiController/SomeAction/5”) 
    .WithJsonContent(@”{“”SomeInt””: 1, “”SomeString””: “”Test””}”) 
    .And() 
    .WithHttpMethod(HttpMethod.Post) 
    .To(c => c.SomeAction(5, new RequestModel 
    { 
     SomeInt = 1, 
     SomeString = “Test” 
    })); 

आप इसे अपने आप को लागू करना चाहते हैं, तो आप यहाँ कोड देख सकते हैं और नकल यह: https://github.com/ivaylokenov/MyWebApi/blob/master/src/MyWebApi/Utilities/RouteResolvers/InternalRouteResolver.cs

संबंधित मुद्दे