Різниця між блоком it та блоком зазначення в RSpec


83

У чому різниця між блоком it та блоком уточнення в RSpec?

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
Ви праві, Брендоне, itі specifyідентичні методи. Ви можете побачити, де вони визначені тут, у джерелі .
Йорданія, біг

1
Відмінний улов! Дивовижно, що ви можете знайти, прочитавши джерело. :) Оновлю відповідь.
Michelle Tilley

2
Ось суть із прикладами імен методів станом на грудень 2013 року: gist.github.com/Dorian/7893586 (приклад, це, вкажіть, фокус, ...)
Доріан

4
краще rspec не радити використовувати should, а на користьexpect
fotanus

4
ОНОВЛЕННЯ до чудового посилання від @Jordan: github.com/rspec/rspec-core/blob/master/lib/rspec/core/ ... тепер це місце, де його можна знайти.
Флоріан Ек
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.