Это конфликт имен с пространством имен. Класс и пространство имен имеют одно и то же имя.
Удалите оператор using
и используйте его вместо:
var mockHttpClient = new MockHttpClient.MockHttpClient();
Плохой выбор имен для этой библиотеки и ужасное количество зависимостей. Я бы держался подальше на твоем месте.
UPDATE:
Вы попросили альтернативу, поэтому вот что я недавно сделал для проекта:
Класс HttpClient
имеет конструктор, который принимает объект HttpMessageHandler
, так что вы можете передать свой собственный обработчик и смоделировать поведение.
Создайте класс, производный от DelegatingHandler
и переопределяющий поведение отправки:
public class TestHandler : DelegatingHandler
{
private Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> _handler;
public TestHandler(Func<HttpRequestMessage, CancellationToken, Task<HttpResponseMessage>> handler)
{
_handler = handler;
}
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
return _handler(request, cancellationToken);
}
public static Task<HttpResponseMessage> OK()
{
return Task.Factory.StartNew(() => new HttpResponseMessage(HttpStatusCode.OK));
}
public static Task<HttpResponseMessage> BadRequest()
{
return Task.Factory.StartNew(() => new HttpResponseMessage(HttpStatusCode.BadRequest));
}
}
Затем в своем тесте вы используете ваш обработчик в конструкторе:
//Create an instance of the test handler that returns a bad request response
var testHandler = new TestHandler((r, c) =>
{
return TestHandler.BadRequest();
});
//Create the HTTP client
var client = new HttpClient(testHandler);
//Fake call, will never reach out to foo.com
var request = new HttpRequestMessage(HttpMethod.Get, "http://www.foo.com");
request.Content = new StringContent("test");
//This will call the test handler and return a bad request response
var response = client.SendAsync(request).Result;
Обратите внимание, у меня есть несколько удобных статических методов для создания для меня функций обработки.