У меня есть метод контроллера веб-API, который я хочу провести модульное тестирование. Требуется HttpRequestMessage
, но я не могу понять, как установить контент, который я хочу передать. Можно ли создать / смоделировать HttpRequestMessage
, чтобы я мог дать ему string
, который я хочу быть результатом await request.Content.ReadAsStringAsync()
?
Это мой метод управления:
[HttpPost]
public async Task<HttpResponseMessage> Post(HttpRequestMessage request)
{
var data = await request.Content.ReadAsStringAsync();
//do something with data
}
Я легко могу создать HttpRequestMessage
с его конструктором без параметров, но я не могу понять, как установить для содержимого значащее значение. Я бы хотел, чтобы мой тест работал по следующим направлениям:
[TestMethod]
public async Task PostMethodWorks()
{
var controller = new MyController();
var data = "this will be JSON";
var httpRequestMessage = new HttpRequestMessage();
//set the content somehow so that httpRequestMessage.Content.ReadAsStringAsync returns data
var response = await controller.Post(httpRequestMessage);
//assert something about the response here
}
Можно ли установить значение содержимого для некоторого JSON, или мне нужно будет изменить метод, чтобы он принимал другой параметр?
(Для большего контекста я хочу, чтобы метод принимал HttpRequestMessage
, потому что я работаю над устаревшей кодовой базой, в которой есть множество методов контроллера, которые принимают HttpRequestMessage
.)