Ответ 1
Это было решено, указав пустую конфигурацию:
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());
Я получил ответ отсюда
Тестирование модуля ASP.NET WebApi с помощью Request.CreateResponse
Я использую ASP.Net MVC 4 RC ApiController и пытаюсь провести модульное тестирование методом GET.
Этот метод использует метод CreateResponse<T>
который используется в HttpRequestMessage
, но я понятия не имею, как его смоделировать или заставить его работать правильно.
Тело метода содержит это:
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
действительно CreateResponse
свою работу?
Это было решено, указав пустую конфигурацию:
request.Properties.Add(HttpPropertyKeys.HttpConfigurationKey, new HttpConfiguration());
Я получил ответ отсюда
Тестирование модуля ASP.NET WebApi с помощью Request.CreateResponse
WebAPI 1 с VB здесь!
Мне удалось получить гибридные ответы из вашей ссылки выше, чтобы заставить это работать так же просто, как это:
Dim request As HttpRequestMessage = New HttpRequestMessage()
Return request.CreateResponse(HttpStatusCode.BadRequest, myCustomClassObject, GlobalConfiguration.Configuration)
Просто публиковать в случае, если это кому-то поможет.