如何在HttpRequestMessage上设置HttpConfiguration以进行测试?

时间:2013-08-21 14:19:05

标签: asp.net-mvc unit-testing asp.net-web-api

我的控制器在请求对象上使用CreateResponse。因此,为了测试我的控制器,我需要在HttpConfiguration上设置HttpRequestMessage的实例,因为CreateResponse期望此配置在那里。

如今,为了帮助测试,有各种属性的设置器,但在HttpRequestMessage上只有GetConfiguration方法,没有明显的设置器。

我该怎么做?

1 个答案:

答案 0 :(得分:8)

使用以下代码:

...

ThingController controller = new ThingController(... dependencies ...);

// Fake the configuration.
//
var httpConfig = new HttpConfiguration();
controller.Configuration = httpConfig;

// Fake the request.
//
var httpRequest = new HttpRequestMessage(HttpMethod.Get, "http://mstest/things/1");
httpRequest.Properties[HttpPropertyKeys.HttpConfigurationKey] = httpConfig;

controller.Request = httpRequest;

注意从底部开始的第2行。偷偷摸摸。