RSpec - Aspettative

Quando impari RSpec, potresti leggere molto sulle aspettative e all'inizio può creare un po 'di confusione. Ci sono due dettagli principali che dovresti tenere a mente quando vedi il termine Aspettativa:

  • Un'aspettativa è semplicemente una dichiarazione in un file it block che utilizza l'estensione expect()metodo. Questo è tutto. Non è più complicato di così. Quando hai un codice come questo:expect(1 + 1).to eq(2), hai un'aspettativa nel tuo esempio. Ti aspetti che l'espressione1 + 1 valuta a 2. La formulazione è importante poiché RSpec è un framework di test BDD. Chiamando questa istruzione un'aspettativa, è chiaro che il codice RSpec descrive il "comportamento" del codice che sta testando. L'idea è che stai esprimendo come dovrebbe comportarsi il codice, in un modo che si legge come la documentazione.

  • La sintassi delle aspettative è relativamente nuova. Prima diexpect() è stato introdotto (nel 2012), RSpec ha utilizzato una sintassi diversa basata su should()metodo. L'aspettativa di cui sopra è scritta in questo modo nella vecchia sintassi:(1 + 1).should eq(2).

È possibile riscontrare la vecchia sintassi RSpec per le aspettative quando si lavora con un codice precedente o una versione precedente di RSpec. Se utilizzi la vecchia sintassi con una nuova versione di RSpec, vedrai un avviso.

Ad esempio, con questo codice -

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

Quando lo esegui, otterrai un output simile a questo -

. 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

A meno che non sia necessario utilizzare la vecchia sintassi, si consiglia vivamente di utilizzare wait () invece di should ().