lundi 2 février 2015

Cannot call web api 2 post method with int parameter in URL in Unit Test using Http server

Please ignore the spelling mistake, I cannot copy code so I have typed the whole thing and changed name of controller and method.


WEB API 2


Controller:



// Controller name is Test
public HttpResponseMessage Method1(int param1) // Post method
{
// return string
}


If I create an object of controller in test case then it is working fine. But if I want to test in localhost using following code:


Unit Test:



public void Method1Test()
{
HttpResponseMessage response;
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}");
HttpServer server = new HttpServer(config);
using(var client = new HttpClient(server))
{
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "http://localhost:5022/api/test?param1=1");
request.Content = new ObjectContent<int>(param1, new JsonMediaTypeFormatter());
response = client.SendAsync(request, CancellationToken.None).Result;
};
Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
}


Now, my test case is failing. I used the same code in different project and it worked. May be it is the way I am trying to call Post method. Is this the right way to call post method with Int parameter in URL?


In help page, under API column it shows:



POST api/test/param1={param1}


Also I have put some stop point in actual service I am cursor is not stopping at that point. Why?


If I want to call the same service from browser, what URL should I pass? Is it -



http://localhost:5022/api/test?param1=1


Or something else?


Aucun commentaire:

Enregistrer un commentaire