RSpec에서 IT 블록과 지정 블록의 차이점


83

RSpec에서 IT 블록과 지정 블록의 차이점은 무엇입니까?

subject { MovieList.add_new(10) }

specify { subject.should have(10).items }
it { subject.track_number.should == 10}

그들은 같은 일을하는 것 같습니다. 확실히 확인하는 것뿐입니다.

답변:


110

방법은 동일합니다 . 테스트 본문에 따라 사양을 영어로 더 잘 읽을 수 있도록 제공됩니다. 다음 두 가지를 고려하십시오.

describe Array do
  describe "with 3 items" do
    before { @arr = [1, 2, 3] }

    specify { @arr.should_not be_empty }
    specify { @arr.count.should eq(3) }
  end
end

describe Array do
  describe "with 3 items" do
    subject { [1, 2, 3] }

    it { should_not be_empty }
    its(:count) { should eq(3) }
  end
end

9
당신 말이 맞아요, Brandon, it그리고 specify동일한 방법입니다. 여기 소스에서 정의 된 위치를 볼 수 있습니다 .
Jordan Running

1
뛰어난 캐치! 소스를 읽어 보면 놀라운 것을 찾을 수 있습니다. :) 답변을 업데이트하겠습니다.
Michelle Tilley 2011

2
다음은 2013 년 12 월 기준 메소드 이름 예제가있는 요점입니다. gist.github.com/Dorian/7893586 (예, it, specify, focus, ...)
Dorian

4
더 나은 RSpec에 의 사용에 대한 조언 should, 그리고 찬성expect
fotanus

4
@Jordan의 훌륭한 링크에 대한 업데이트 : github.com/rspec/rspec-core/blob/master/lib/rspec/core/… 가 이제 그것을 찾을 수있는 곳입니다.
Florian Eck
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.