2013-08-21 3 views
2

Мой контроллер использует CreateResponse на объекте запроса. Поэтому, чтобы проверить мой контроллер, мне нужно установить экземпляр HttpConfiguration на HttpRequestMessage, потому что CreateResponse ожидает, что эта конфигурация будет там.Как настроить HttpConfiguration на HttpRequestMessage для тестирования?

В настоящее время, чтобы помочь с тестированием, существуют сеттеры для всех видов свойств, но на HttpRequestMessage существует только метод и без видимого сеттера.

Как это сделать?

ответ

6

Используйте следующий код:

... 

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-й снизу. Sneaky.

+1

, что этот статический класс, HttpPropertyKeys, не лучше документирован вне меня –