У меня есть некоторые проблемы, пытаясь обернуть мой код, который будет использоваться в модульных тестах. Проблемы в этом. У меня есть интерфейс IHttpHandler:
public interface IHttpHandler
{
HttpClient client { get; }
}
И класс, использующий его, HttpHandler:
public class HttpHandler : IHttpHandler
{
public HttpClient client
{
get
{
return new HttpClient();
}
}
}
И затем класс Connection, который использует simpleIOC для внедрения клиентской реализации:
public class Connection
{
private IHttpHandler _httpClient;
public Connection(IHttpHandler httpClient)
{
_httpClient = httpClient;
}
}
И тогда у меня есть проект unit test, который имеет этот класс:
private IHttpHandler _httpClient;
[TestMethod]
public void TestMockConnection()
{
var client = new Connection(_httpClient);
client.doSomething();
// Here I want to somehow create a mock instance of the http client
// Instead of the real one. How Should I approach this?
}
Теперь, очевидно, у меня будут методы в классе Connection, которые будут извлекать данные (JSON) из моего заднего конца. Тем не менее, я хочу написать модульные тесты для этого класса, и, очевидно, я не хочу писать тесты против реального конца, а скорее издеваться. Я попытался сделать Google хорошим ответом на этот вопрос без особого успеха. Я могу и использовал Moq, чтобы издеваться раньше, но никогда на что-то вроде httpClient. Как мне подойти к этой проблеме?
Спасибо заранее.