2013-11-24 2 views
1

몇 가지 단위 테스트를 작성 중이며 RestSharp를 조롱하여 다양한 HTTP 요청을 작성할 수 있기를 원합니다.또 다른 모의에서 Moq 인스턴스 반환하기

현재 Restsharp에 기반한 3 개의 인터페이스를 사용하고 있습니다. IRestClient, IRestRequest

나는 그것이 위조를 통해 예측 가능한 결과를 반환하는 것입니다 이해하고, 내가 MOQ 및 Ninject에 통해 이에 대한 모의를 구성에 문제가 있어요으로 조롱의 전제 IRestResponse.

그 자체로 커널에서 다음과 같은 검색 결과를 얻었습니다.

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

나는 기본적으로 내가 clientMock.Execute(IRestRequest) 방법을 실행할 때마다 responseMock를 반환해야합니다.

이 코드에서 responseMock의 반환을 조롱 할 수 없기 때문에 이것이 올바른 방법일까요?

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

답변

2

Mock<T>는 모의의 동작을 정의하지만, 실제 조롱 인스턴스를 표시하지 않습니다 수 있습니다. `) (이, 내가`반환을 사용했는데 어떤 이유에서, 그러나, 작동

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

: 당신이 유형 IRestResponse의 객체를 반환 할 때문에,하지 Mock<IRestResponse> 입력 T의 인스턴스를 얻기 위해 Mock<T>.Object 속성을 사용하여 메서드를 제네릭 태그 (예 :'Returns ()'로 대체했습니다. 질문에서 이것을 제거하고 응답에 대한 수정을 제안했습니다. –

+0

이것은 내 인스턴스에서 작동하지 않습니다. http://stackoverflow.com/questions/38244204/return-a-mock-from-a-mocked-method –