У меня есть интеграционный тест, который я хотел использовать в качестве основы для тестирования моих контроллеров 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;
}