2012-01-11 2 views
1

누구나 한 줄로 줄이는 방법을 알고 있습니까?한 줄에 스텁/모의 기대/should_receive를 정의 하시겠습니까?

location = stub(build :true) 

그래서, 누군가가를 지정하는 방법을 참조하십시오으로 위의 동일

location = stub 
location.stub(build: true) 

을 (RSpec에 2) 예를 들어

location = mock 
location.should_receive(:build) 

, 당신은 다음과 같은 정의 할 수 있습니다 모의 전화에 대한 기대?

답변

4

location = mock.tap { |loc| loc.should_receive(:build) }

+0

이거 사랑해. 선생님, 좋은 선생님. 다른 해결책이있는 경우에는 몇 시간 더 열어 둡니다.하지만이 작업이 완료됩니다. –

+0

@zetetic, 고마워, 그걸 몰랐어 :) –

1

작동하지만, 추한 외모 : 모든 테스트 모의 정의가있는 경우

(location = mock).should_receive(:build) 
+0

흥미 롭은 그 방법을 생각하지 않았다. –

1

, 당신은 를 사용하여 표기를 단축 할 수있는 파일의 시작 부분에서 수 있습니다.

let (:location) { double :location } 

는 그런 다음 location을 사용하고 때마다 자동으로 새로운 모의 객체를 만듭니다

location.should_receive(:build) 
+0

오른쪽에, 비슷한 방법을 과거에 사용하고 잘 때 문맥을 통해 동일한 모의를 사용하고 싶습니다. –

+0

필자가 아는 한, 모든 스코프에 대해 새로운 mock 객체를 생성해야합니다. 그것은 편리 할 수 ​​있습니다. – megas

+0

'location'은 각 예제에 대해 다시 인스턴스화됩니다. 이것은 아마도 최상의 접근 방법 일 것입니다. 특히 어떤 경우에는 기대를 설정해야하고 다른 설정에서는 기대를 설정해야하는 경우가 있습니다. – zetetic