HttpClient с asp.net WebApi в сценарии модульного тестирования

У меня есть интеграционный тест, который я хотел использовать в качестве основы для тестирования моих контроллеров WebAPI.

Первоначально я думал, что мне придется настроить -WebAPI в режиме собственного -хоста и провести -конечные -в -конечные тесты по локальному Http.

Однако позже, просмотрев тесты в проекте WebApiContrib, я понял, что можно настроить HttpClient с набором HttpServer -с правильным маршрутом службы к контроллеру WebAPI. Кажется, я могу выполнить модульное тестирование контроллеров без настройки WebApi в режиме собственного хоста -. Я могу указать любое доменное имя в запросе на клиенте, и HttpClient, кажется, автоматически -волшебным образом привязывается к правильному контроллеру.

Происходит ли здесь какой-либо Http-транспорт, использующий какие-то локальные межпроцессные коммуникации или просто «видящий», что сервер находится в том же домене приложения и, таким образом, использующий отражение? Что происходит под капотом, чтобы это произошло?

код:

[Test]
public void Test_WebApi_Controller()
{
    Assembly.Load("myproj.Web");

    var prodServiceMock = new Mock<IProductService>();
    ObjectFactory.Initialize(x => x.For<IProductService>().Use(prodServiceMock.Object));                      

    var config = new HttpConfiguration();
    config.Routes.MapHttpRoute("default", "webapi/{controller}/{id}", new { id = RouteParameter.Optional });
    config.ServiceResolver.SetResolver(new WebApiDependencyResolver());

    var server = new HttpServer(config);
    var client = new HttpClient(server);

    var response = client.GetAsync("http://anything.com/webapi/product").Result;

}
9
задан ahsteele 9 August 2012 в 02:03
поделиться