Разница между ИТ-блоком и блоком задания в RSpec

83

В чем разница между блоком IT и блоком задания в RSpec?

subject { MovieList.add_new(10) }

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

Кажется, они делают одну и ту же работу. Просто проверяю, чтобы убедиться.

Башепс
источник

Ответы:

111

Методы те же ; они предназначены для облегчения чтения спецификаций на английском языке в зависимости от текста вашего теста. Рассмотрим эти два:

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
Вы правы, Брэндон, itи specifyиспользуете идентичные методы. Вы можете увидеть, где они определены здесь, в источнике .
Jordan Running
1
Отличный улов! Удивительно, что вы можете найти, прочитав исходник. :) Обновлю ответ.
Мишель Тилли
2
Вот суть с примерами имен методов по состоянию на декабрь 2013 г .: gist.github.com/Dorian/7893586 (например, it, укажите, focus, ...)
Дориан
4
лучше rspec посоветовать против использования shouldи в пользуexpect
fotanus
4
ОБНОВЛЕНИЕ отличной ссылки от @Jordan: github.com/rspec/rspec-core/blob/master/lib/rspec/core/… теперь то место, где его найти.
Florian Eck