我有一个要进行单元测试的 Web 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,或者我需要更改方法以便它采用不同的参数?
(对于更多的上下文,我想让方法接受 aHttpRequestMessage的原因是因为我正在处理一个遗留代码库,其中包含大量的控制器方法,这些方法接受 a HttpRequestMessage。)
慕桂英4014372
相关分类