2012-06-15 51 views
67

我正在使用ASP.Net MVC 4 RC的ApiController,我試圖單元測試一個Get方法。如何嘲笑HttpRequestMessage CreateResponse <T>擴展方法

此方法使用HttpRequestMessage上的CreateResponse方法,但我不知道如何模擬它或使其正常工作。

方法體包含此:

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方法實際上完成其工作?

+1

這看起來像是解決了同樣的問題:http://stackoverflow.com/questions/10868673/asp-net-webapi-unit-testing-with-request-createresponse –

回答

0

的WebAPI 1 VB這裏!

我設法混合反應從你的鏈接上面得到這個像這樣簡單的工作:

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

剛剛發佈的情況下,它可以幫助任何人。