2014-04-16 3 views
0

하나의 특정 테스트 중에 피하고 싶지 않은 모델에 메소드 (send_to)가 있습니다. 하지만 항상 처형당했습니다.rspec 스텁 이미 imp에서 메소드

이 작업을 수행하고 있습니다.

subject { create(:batch_with_jobs) } #Batch hasMany Jobs 
... 
it 'raise if all jobs are not in right state' do 
    Job.stub(:sent_to){true} #first attempt, doesnt work 
    Job.any_instance.stub(:sent_to).and_return(true) #second attempt, doesnt work 

    subject.jobs.first.update_attribute :state, :error_submitting 
    expect{subject.commit}.to raise_error 
end 

커밋 메소드는 원래의 send_to 메소드를 계속 실행합니다.

편집 : 예, 문제는 내가 작성한 내용이므로 SEND_TO이며 SEND_TO입니다.

+1

귀하의 질문에이 메서드는'send_to'라고하지만, 코드는'sent_to'를 스텁합니다. 그것이 문제일까요? – fivedigit

+0

그와 같은 구문에는 아무런 문제가 없습니다. 개인적으로 컨텍스트를 추가하고 블록 전후에 스텁/언 스텁을 수행합니다. JOb 관련 코드를 보지 않고 말하기 힘든 것 외 –

답변

1

코드에 대한 두 개의 주석. @fivedigit가 말한대로

  1. , 당신은 sent_to 스텁하지만 방법은 send_to라는 주장한다.
  2. 사양 설명을 읽기가 어렵습니다. 올바른 작업이없는 경우 오류가 발생하거나 모든 작업의 ​​상태가 잘못되었을 때 오류가 발생합니다.
+0

당신이 맞습니다, sent_to가 유효하지 않습니다. 질문을 삭제해야합니까? –

+1

아니요, 이러한 유형의 실수는 매우 일반적입니다 (예 : 우리 모두는 오타를 만들고 다른 사람들에게 오타를 지적해야합니다). 나는 다른 사람들도 똑같은 문제를 겪는 것을보기 위해 위안을 찾는다 :-) – Ariejan

관련 문제