C# 单元测试Web API调用-如何通过将原始请求文本转换为HttpRequestMessage来使用它进行测试?

C# 单元测试Web API调用-如何通过将原始请求文本转换为HttpRequestMessage来使用它进行测试?,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我正在为接受文件上传的WebAPI控制器编写一个单元测试。我希望能够将原始请求消息作为字符串存储在“测试资源”文件中,并将其转换为HttpRequestMessage。我该怎么做 例如: POST http://local/api/File/26 HTTP/1.1 Accept: */* Authorization: f1697cb7-7dd4-49c7-87fd-3f09bc3f3d7a ServiceId: 0 Partition: 9000 Content-Type: multipart/

我正在为接受文件上传的WebAPI控制器编写一个单元测试。我希望能够将原始请求消息作为字符串存储在“测试资源”文件中,并将其转换为HttpRequestMessage。我该怎么做

例如:

POST http://local/api/File/26 HTTP/1.1
Accept: */*
Authorization: f1697cb7-7dd4-49c7-87fd-3f09bc3f3d7a
ServiceId: 0
Partition: 9000
Content-Type: multipart/form-data; boundary="Upload----05/06/2014 14:55:27"
Host: local
Content-Length: 179
Expect: 100-continue

--Upload----05/06/2014 14:55:27
Content-Disposition: attachment; filename=MyTestFile.txt
Content-Type: application/x-object

Hello World!!
--Upload----05/06/2014 14:55:27--
这个原始请求将存储在资源文件中,我最终会将其解析并处理为测试的
HttpRequestMessage


除了手动构建内容结构之外,还有什么简单的方法吗?

我不知道有什么简单的方法可以将此原始文本解析为HttpRequestMessage…但是您是否考虑过使用
MutlipartFormDataContent
构建此多部分表单数据请求?下面是一个例子

HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:9095");

HttpRequestMessage request = new HttpRequestMessage();

MultipartFormDataContent mfdc = new MultipartFormDataContent();
mfdc.Add(new StringContent("Hell, World!"), "greeting");
mfdc.Add(new StreamContent(new MemoryStream(Encoding.UTF8.GetBytes("This is from a file"))), name: "Data", fileName: "File1.txt");

HttpResponseMessage response = client.PostAsync("/api/File", mfdc).Result;