2016-08-24 1 views
0

동일한 설명 블록에서 동일한 호출이 반복적으로 수행되는 경우.RSpec에서 반복되는 메소드 호출을 말끔하게하는 관용적 인 방법이 있습니까?

RSpec.describe Grant do 
    let(:grant) { Grant.make } 

    describe "#exchange!" do 
    it "destroys token" do 
     grant.exchange! # dry me up! 
     expect(grant).to be_destroyed 
    end 
    it "returns a Token" do 
     expect(grant.exchange!).to be_a(Token) # dry me up! 
    end 
    end 
end 

은 내가 subject와 함께 할 방법을 근무했습니다 grant.exchange!

을 건조 할,하지만 난 명시 적 주제는 냄새 나는 알고있다.

답변

1

각 예를하기 전에 실행되는 memoized 도우미를 정의하는 let!을 사용할 수

RSpec.describe Grant do 
    let(:grant) { Grant.make } 

    describe "#exchange!" do 
    let!(:result) { grant.exchange! } 

    it "destroys token" do 
     expect(grant).to be_destroyed 
    end 

    it "returns a Token" do 
     expect(result).to be_a(Token) 
    end 
    end 
end 

그러나, 나는 개인적으로 당신의 코드에서와 같이, 예 내에서 명시 적으로 메소드를 호출하는 것을 선호합니다. 호출 이전과 이후의 상태를보다 쉽게 ​​처리 할 수 ​​있습니다.

+0

감사합니다. 이것이 제가 끝내 준 것입니다. – Bungus