RSpec - Oczekiwania

Kiedy uczysz się RSpec, możesz dużo czytać o oczekiwaniach i na początku może to być trochę zagmatwane. Są dwa główne szczegóły, o których należy pamiętać, kiedy zobaczysz termin Oczekiwanie -

  • Oczekiwanie to po prostu stwierdzenie w pliku it block który używa expect()metoda. Otóż ​​to. To nie jest bardziej skomplikowane. Gdy masz taki kod:expect(1 + 1).to eq(2), masz w swoim przykładzie Oczekiwanie. Spodziewasz się, że wyrażenie1 + 1 ocenia do 2. Sformułowanie jest ważne, ponieważ RSpec jest platformą testową BDD. Nazywając tę ​​instrukcję oczekiwaniem, staje się jasne, że kod RSpec opisuje „zachowanie” testowanego kodu. Chodzi o to, że wyrażasz, jak powinien zachowywać się kod, w sposób przypominający dokumentację.

  • Składnia oczekiwań jest stosunkowo nowa. Zanimexpect() Metoda została wprowadzona (w 2012 roku), RSpec używał innej składni, która była oparta na should()metoda. Powyższe oczekiwanie jest napisane w taki sposób w starej składni:(1 + 1).should eq(2).

Podczas pracy ze starszym kodem lub starszą wersją RSpec możesz napotkać starą składnię RSpec dla oczekiwań. Jeśli używasz starej składni z nową wersją RSpec, zobaczysz ostrzeżenie.

Na przykład z tym kodem -

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

Po uruchomieniu otrzymasz wynik, który wygląda następująco -

. 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

O ile nie musisz używać starej składni, zdecydowanie zaleca się użycie Expect () zamiast should ().