Если вы ищете возможности тестирования Flurl , чтобы помочь с этим, я боюсь, что это не сработает.Эти функции специально разработаны для тестирования поведения вашего клиентского кода на основе поддельных ответов, которые вы настроили в своем тесте.Похоже, вы хотите установить код состояния из реального вызова.
Лучший способ, о котором я могу подумать, это сбросить строку .ReceiveJson<T>()
в SendRequestAsync
и изменить метод.подпись для возврата Task<HttpResponseMessage>
:
using System.Net.Http;
public static async Task<HttpResponseMessage> SendRequestAsync(string baseUrl, Dictionary<string, string> body)
{
using (var flurl_client = new FlurlClient(baseurl))
{
try
{
var response = await flurl_client
.Request()
.PostUrlEncodedAsync(body); // this returns Task<HttpResponseMessage>
return response;
}
catch (Exception ex)
{
Assert.Fail(ex.Message);
}
return null;
}
}
Тогда ваш тест может сделать это:
var resp = await Helper.SendRequestAsync(...);
Assert.AreEqual(HttpStatusCode.OK, resp.StatusCode);
Все, что нуждается в десериализованном теле ответа, может сделать это:
var token = await Helper.SendRequestAsync(...).ReceiveJson<AccessToken>();