Я пытаюсь выполнить единичную тестовую логику связи REST для клиента UWP. Что касается the answer for System.Web.HttpClient, я обнаружил, что Windows.Net.HttpClient также принимает аргумент под названием IHttpFilter
.UWP Windows.Web.HttpClient поддельный для модульного теста
Итак, я стараюсь сделать настраиваемый ответ с IHttpFilter
, но я не знаю, как правильно ответить.
public class TestFilter : IHttpFilter
{
public IAsyncOperationWithProgress<HttpResponseMessage, HttpProgress> SendRequestAsync(HttpRequestMessage request)
{
if (request.Method == HttpMethod.Get)
{
// response fake response for GET...
}
}
public void Dispose()
{
// do nothing
}
}
И целевой метод для модульного теста приведен ниже.
public async Task<string> PostResult(HttpClient httpClient, string username)
{
var json = new JsonObject
{
{"Username",
JsonValue.CreateStringValue(string.IsNullOrEmpty(username) ? CommonKey.UnAuthorizedUserPartitionKey : username)
},
};
var content = new HttpStringContent(json.Stringify());
content.Headers.ContentType = new HttpMediaTypeHeaderValue("application/json");
// I want to make below line testable...
var response = await httpClient.PostAsync(new Uri(Common.ProcessUrl), content);
try
{
response.EnsureSuccessStatusCode();
return null;
}
catch (Exception exception)
{
return exception.Message ?? "EMPTY ERROR MESSAGE";
}
}
Обратите внимание, что это не дублировать вопросы, связанные с System.Web.HttpClient
насмешливой/подделка. То, что я прошу, - Windows.Web.HttpClient
. Я не смог реализовать с ним.
Отметьте, что Windows.Web.Http.IHttpClient
является внутренний доступен и HttpClient
запечатан. Настолько сложно сделать Mock или наследовать и переопределить его.
Почему бы не покончить с целым прямым вызовом 'HttpClient' и выставить необходимую функциональность за абстракцией. Вы даете себе лишнюю работу (ИМХО). – Nkosi
правый. Я немного запутался :(Я добавляю целевой метод для проверки. – Youngjae
Возможный дубликат [Mocking HttpClient в модульных тестах] (http://stackoverflow.com/questions/36425008/mocking-httpclient-in-unit-tests) – Nkosi