Unterschied zwischen einem it-Block und einem spec-Block in RSpec


83

Was ist der Unterschied zwischen einem it-Block und einem spec-Block in RSpec?

subject { MovieList.add_new(10) }

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

Sie scheinen den gleichen Job zu machen. Ich überprüfe nur, um sicher zu sein.

Antworten:


110

Die Methoden sind die gleichen ; Sie werden bereitgestellt, um das Lesen von Spezifikationen auf Englisch basierend auf Ihrem Testkörper zu verbessern. Betrachten Sie diese beiden:

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

8
Sie haben Recht, Brandon, itund specifysind identische Methoden. Sie können hier in der Quelle sehen, wo sie definiert sind .
Jordan läuft

1
Hervorragender Fang! Erstaunlich, was Sie beim Lesen der Quelle finden können. :) Ich werde die Antwort aktualisieren.
Michelle Tilley

2
Hier ist ein Kern mit den Beispielmethoden Namen ab Dezember 2013: gist.github.com/Dorian/7893586 (Beispiel, es, spezifizieren, konzentrieren, ...)
Dorian

4
Besser rspec raten von der Verwendung von shouldund zugunsten vonexpect
fotanus

4
UPDATE zu dem ausgezeichneten Link von @Jordan: github.com/rspec/rspec-core/blob/master/lib/rspec/core/… ist jetzt der Ort, an dem Sie ihn finden können.
Florian Eck
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.