2012-01-31 6 views
1

rspec에서 배열을 모의하려고합니다 (앱에서 외부 API의 반환 객체입니다). 그렇지만 어떻게해야할지 모르겠습니다. rSpec에서 배열을 조롱하는 방법?

나는 이런 식으로 조롱 시도 : 작동

item = double("item") 
item.stub(:[]) { :return_value } 

을,하지만 난거야 : RETURN_VALUE를 배열의 각 값에 대해. 다른 방법이 있습니까?

+1

해결책은 API에서 래퍼의 반환 개체를 래핑 한 다음 대신 조롱하는 것이지만이를 피하려고합니다. – Indigon

답변

6

난 당신이 배열에 대한 테스트 double을 생성 할 필요가 없다고 생각합니다, 그들은 당신의 테스트 코드에 불필요한 합병증을 추가합니다. 당신은 그냥 가짜 배열을 생성하고 나중에 사용할 수 있습니다

items = [:return_value1, :return_value2] 

을 경우 당신이 방법을 스텁 제 1 및 후속 호출에 대해 서로 다른 결과를 반환해야하는 경우, 당신은이 작업을 수행 할 수 있습니다이에서

obj.stub(:method).and_return('1', '2') 

case obj.method은 처음 호출 될 때 '1'을 반환하고 모든 후속 호출에 대해 '2'를 반환합니다.

또한 스텁에 block을 사용하는 한이 블록에서 동적으로 반환 값을 계산할 수 있습니다. 그러나 이것은 관용적으로 스터브이 정적 데이터를 반환해야하기 때문에 아주 좋은 방법은 아닌 것으로 간주됩니다.

obj.stub(:method) { Time.now } 
+0

그냥 배열을 만드는 가장 쉬운 방법에 대해 생각하지 않았습니다. 감사 – Indigon

관련 문제