Избегайте связи с HttpContext
.
ApiController
уже имеет свойство
HttpRequestMessage Request { get; set; }
, которое обеспечивает доступ к текущему запросу.
Изменение дизайна
public class SearchApiController : ApiController
[HttpPost]
public async Task<HttpResponseMessage> Applications(string authToken) {
Stream stream = await this.Request.Content.ReadAsStreamAsync();
string req;
using (var reader = new StreamReader(stream)) {
req = reader.ReadToEnd();
}
//...
}
}
Теперь тест в вашем исходном примере более тесно связан
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "http://this.com");
//...set the content of the request as needed
httpRequestMessage.Content = new StringContent("some data");
var httpRouteDataMock = new Mock<IHttpRouteData>();
var controllerContext = new HttpControllerContext(new HttpConfiguration(),
httpRouteDataMock.Object, httpRequestMessage);
_controller.ControllerContext = controllerContext;
//...