RSpec - Erwartungen

Wenn Sie RSpec lernen, lesen Sie möglicherweise viel über die Erwartungen und es kann zunächst etwas verwirrend sein. Es gibt zwei Hauptdetails, die Sie beachten sollten, wenn Sie den Begriff Erwartung sehen:

  • Eine Erwartung ist einfach eine Aussage in einem it block das nutzt die expect()Methode. Das ist es. Es ist nicht komplizierter als das. Wenn Sie Code wie diesen haben:expect(1 + 1).to eq(2)Sie haben eine Erwartung in Ihrem Beispiel. Sie erwarten, dass der Ausdruck1 + 1 bewertet zu 2. Der Wortlaut ist jedoch wichtig, da RSpec ein BDD-Testframework ist. Wenn Sie diese Anweisung als Erwartung bezeichnen, wird deutlich, dass Ihr RSpec-Code das „Verhalten“ des getesteten Codes beschreibt. Die Idee ist, dass Sie das Verhalten des Codes so ausdrücken, dass es sich wie eine Dokumentation liest.

  • Die Expectation-Syntax ist relativ neu. Vor demexpect() Methode wurde eingeführt (im Jahr 2012), RSpec verwendete eine andere Syntax, die auf der basierte should()Methode. Die obige Erwartung ist in der alten Syntax folgendermaßen geschrieben:(1 + 1).should eq(2).

Bei der Arbeit mit einem älteren Code oder einer älteren Version von RSpec kann die alte RSpec-Syntax für Erwartungen auftreten. Wenn Sie die alte Syntax mit einer neuen Version von RSpec verwenden, wird eine Warnung angezeigt.

Zum Beispiel mit diesem Code -

RSpec.describe "An RSpec file that uses the old syntax" do
   it 'you should see a warning when you run this Example' do 
      (1 + 1).should eq(2) 
   end 
end

Wenn Sie es ausführen, erhalten Sie eine Ausgabe, die so aussieht -

. Deprecation Warnings:

Using `should` from rspec-expectations' old `:should` 
   syntax without explicitly enabling the syntax is deprecated. 
   Use the new `:expect` syntax or explicitly enable 
	
`:should` with `config.expect_with( :rspec) { |c| c.syntax = :should }`
   instead. Called from C:/rspec_tutorial/spec/old_expectation.rb:3 :in 
   `block (2 levels) in <top (required)>'.

If you need more of the backtrace for any of these deprecations to
   identify where to make the necessary changes, you can configure 
`config.raise_errors_for_deprecations!`, and it will turn the deprecation 
   warnings into errors, giving you the full backtrace.

1 deprecation warning total 
Finished in 0.001 seconds (files took 0.11201 seconds to load) 
1 example, 0 failures

Sofern Sie nicht die alte Syntax verwenden müssen, wird dringend empfohlen, Expect () anstelle von Should () zu verwenden.