如何在 HttpRequestMessage 上模拟 CreateResponse 扩展方法
本文关键字:扩展 方法 CreateResponse 模拟 HttpRequestMessage | 更新日期: 2023-09-27 18:37:15
我正在使用 ASP.Net MVC 4 RC的ApiController,我正在尝试对GET方法进行单元测试。
此方法使用HttpRequestMessage
上的CreateResponse<T>
方法,但我不知道如何模拟它或使其正常运行。
该方法的主体包含以下内容:
MediaTypeHeaderValue header = new MediaTypeHeaderValue(versionedSmartBlock.ContentType);
var response = Request.CreateResponse<SmartBlock>(
HttpStatusCode.OK, versionedSmartBlock, header);
在我的单元测试中,我创建了一个空HttpRequestMessage
:
CallsController api = new CallsController(
managerMock.Object, config, adapterFactoryMock.Object);
api.Request = new HttpRequestMessage(
HttpMethod.Get, "http://localhost/Initiate?ern=%2B44123456789");
var response = api.Get("+44123456789", null);
但它只是生成一个InvalidOperationException
:
请求没有关联的配置对象或 提供的配置为空。
有没有人对我如何配置HttpRequestMessage
以便CreateResponse
方法实际完成其工作有任何指示?
这是通过指定空配置来解决的:
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());
我从这里得到了答案
ASP.NET 使用请求创建响应进行 WebApi 单元测试
WebAPI 1 与 VB 在这里!
我设法从上面的链接中混合响应,使其像这样简单:
Dim request As HttpRequestMessage = New HttpRequestMessage()
Return request.CreateResponse(HttpStatusCode.BadRequest, myCustomClassObject, GlobalConfiguration.Configuration)
只是发布以防万一它对任何人有帮助。