Tests unitaires / Test d'intégration de l'API Web avec HttpClient dans Visual Studio 2013

Je vais avoir un moment difficile essayer de tester mon API contrôleur avec Visual Studio 2013. Ma seule solution a une API Web de Projet et un projet de Test. Dans mon projet de test, j'ai une Unité de Test avec ceci:

[TestMethod]
public void GetProduct()
{
    HttpConfiguration config = new HttpConfiguration();
    HttpServer _server = new HttpServer(config);

    var client = new HttpClient(_server);

    var request = new HttpRequestMessage
    {
        RequestUri = new Uri("http://localhost:50892/api/product/hello"),
        Method = HttpMethod.Get
    };

    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    using (var response = client.SendAsync(request).Result)
    {
        Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);

        var test = response.Content.ReadAsAsync<CollectionListDTO>().Result;
    }
}

Je reçois une erreur 404. J'ai essayé de lancer mon API avec une seule instance de Visual Studio (IIS Express), et en essayant de corriger de cette Unité de Test dans une autre instance. Mais pas de chance. J'ai vérifié que je peux mettre cette URL dans un navigateur (quand on Visual Studio est de débogage) et je vois ma réponse JSON. Mais je ne peux pas comprendre comment le faire fonctionner avec mon test unitaire et HttpClient. J'ai essayé de trouver des exemples en ligne mais n'arrive pas à en trouver un. Quelqu'un peut-il aider?

Mise à JOUR 1:
J'ai essayé d'ajouter une route, mais rien ne s'est passé.

HttpConfiguration config = new HttpConfiguration();

//Added this line
config.Routes.MapHttpRoute(name: "Default", routeTemplate: "api/product/hello/");

HttpServer _server = new HttpServer(config);

var client = new HttpClient(_server);

[...rest of code is the same]

Voici mon API Contrôleur

[HttpGet]
[Route("api/product/hello/")]
public IHttpActionResult Hello()
{
     return Ok();
}

Mise à JOUR de la Résolution:
J'ai été en mesure de le faire fonctionner, si j'ai de nouvelles HttpClient sans HttpServer objet. J'ai toujours besoin d'avoir deux instances de VS courir si. 1 l'exécution de mon code API et un autre pour exécuter le Test de l'Unité.

Ici est une méthode de travail.

[TestMethod]
public void Works()
{
    var client = new HttpClient(); //no HttpServer

    var request = new HttpRequestMessage
    {
        RequestUri = new Uri("http://localhost:50892/api/product/hello"),
        Method = HttpMethod.Get
    };

    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    using (var response = client.SendAsync(request).Result)
    {
        Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
    }
}

Ce que quelqu'un sait pourquoi ça ne marche pas avec un HttpServer et un HttpConfiguration passé dans HttpClient? J'ai vu beaucoup d'exemples d'utilisation de ce.

source d'informationauteur duyn9uyen