2013-11-24 45 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-嘲笑法 –

相关问题