2013-11-24 40 views
1

我正在編寫一些單元測試(我只是剛剛開始使用它),並希望能夠創建一個RestSharp模擬來構建各種HTTP請求。從另一個模擬器中返回Moq實例

目前我使用三個基於Restsharp的接口; IRestClientIRestRequestIRestResponse

嘲笑我的理解是通過僞造返回預測的結果,和我有過起訂量和Ninject構建這個一個模擬麻煩的前提。現在,我從內核獲取以下內容:

//Create RESTful interface ecosystem (RestRequest => RestClient => RestResponse) 
var clientMock = _kernel.GetMock<IRestClient>(); 
var requestMock = _kernel.GetMock<IRestRequest>(); 
var responseMock = _kernel.GetMock<IRestResponse>(); 

我基本上需要返回responseMock每當我執行clientMock.Execute(IRestRequest)方法。

這是正確的做事方式,因爲我無法模擬從此代碼返回responseMock;

clientMock.Setup(f => f.Execute(It.IsAny<IRestRequest>())).Returns(responseMock); 

回答

2

Mock<T>允許您定義模擬的行爲,但並不代表實際的嘲笑實例。因爲要返回IRestResponse類型的對象,而不是Mock<IRestResponse>,使用Mock<T>.Object屬性來獲取T類型的實例:

clientMock 
    .Setup(f => f.Execute(It.IsAny<IRestRequest>())) 
    .Returns(responseMock.Object); 
+0

然而這工作,因爲種種原因,我用的是'返回()'方法與泛型標記(即:'返回()'。我已經從這個問題中刪除了這個,並建議對您的響應進行編輯。 –

+0

這似乎並沒有在我的實例中工作 http://stackoverflow.com /問題/ 38244204 /回報-A-模擬從-A-嘲笑法 –

相關問題