У меня возникли некоторые проблемы при попытке обернуть код для использования в модульных тестах. Проблемы вот в чем. У меня есть интерфейс 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;
}
}
И затем у меня есть проект модульного тестирования, который имеет этот класс:
Код: Выделить всё
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. Как мне подойти к этой проблеме?
Подробнее здесь:
https://stackoverflow.com/questions/364 ... unit-tests