2012-06-15 36 views
67

Tôi đang sử dụng ASP.Net MVC 4 RC's ApiController và tôi đang cố gắng kiểm tra đơn vị phương thức Get.Làm thế nào để thử phương pháp mở rộng CreateResponse <T> trên HttpRequestMessage

Phương pháp này sử dụng phương pháp CreateResponse có trên HttpRequestMessage, nhưng tôi không biết làm thế nào để giả lập điều này hoặc để làm cho nó hoạt động chính xác.

cơ thể Phương pháp chứa này:

MediaTypeHeaderValue header = new MediaTypeHeaderValue(versionedSmartBlock.ContentType); 
var response = Request.CreateResponse<SmartBlock>(HttpStatusCode.OK, versionedSmartBlock, header); 

Trong thử nghiệm đơn vị của tôi, tôi tạo ra một HttpRequestMessage trống:

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); 

Nhưng nó chỉ tạo ra một InvalidOperationException:

Yêu cầu không có một đối tượng cấu hình liên quan hoặc cấu hình được cung cấp là null.

Có ai có bất kỳ gợi ý nào về cách tôi có thể cấu hình HttpRequestMessage để phương thức CreateResponse thực sự thực hiện công việc của mình không?

+1

Có vẻ như nó đang giải quyết cùng một vấn đề: http://stackoverflow.com/questions/10868673/asp-net-webapi-unit-testing-with-request-createresponse –

Trả lời

0

WebAPI 1 với VB ở đây!

tôi quản lý để đáp ứng hybrid từ liên kết của bạn ở trên để có được điều này để làm việc như đơn giản như thế này:

Dim request As HttpRequestMessage = New HttpRequestMessage() 
Return request.CreateResponse(HttpStatusCode.BadRequest, myCustomClassObject, GlobalConfiguration.Configuration) 

Chỉ cần đăng trong trường hợp nó giúp bất cứ ai.

Các vấn đề liên quan