Różnica między blokiem IT a określonym blokiem w RSpec


83

Jaka jest różnica między blokiem it a określonym blokiem w RSpec?

subject { MovieList.add_new(10) }

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

Wydaje się, że wykonują tę samą pracę. Tylko sprawdzam, żeby się upewnić.

Odpowiedzi:


111

Metody są takie same ; mają one na celu ułatwienie czytania specyfikacji w języku angielskim w oparciu o treść testu. Rozważ te dwa:

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
Masz rację, Brandon, iti specifystosujesz identyczne metody. Możesz zobaczyć, gdzie są zdefiniowane w źródle .
Jordan Bieganie

1
Doskonały chwyt! Niesamowite, co można znaleźć czytając źródło. :) Zaktualizuję odpowiedź.
Michelle Tilley

2
Oto streszczenie z przykładowymi nazwami metod z grudnia 2013 r .: gist.github.com/Dorian/7893586 (przykład, it, określ, ostrość, ...)
Dorian,

4
Lepiej rspec odradzam używanie should, a na korzyśćexpect
fotanus

4
AKTUALIZACJA do doskonałego linku z @Jordan: github.com/rspec/rspec-core/blob/master/lib/rspec/core/… to teraz miejsce, gdzie go znaleźć.
Florian Eck
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.