RSpec - Expectativas

Quando você aprende RSpec, pode ler muito sobre expectativas e pode ser um pouco confuso no início. Existem dois detalhes principais que você deve ter em mente ao ver o termo Expectativa -

  • Uma expectativa é simplesmente uma declaração em um it block que usa o expect()método. É isso aí. Não é mais complicado do que isso. Quando você tem um código como este:expect(1 + 1).to eq(2), você tem uma Expectativa em seu exemplo. Você está esperando que a expressão1 + 1 avalia para 2. A formulação é importante, pois RSpec é uma estrutura de teste BDD. Chamando essa declaração de Expectation, fica claro que seu código RSpec está descrevendo o “comportamento” do código que está testando. A ideia é que você esteja expressando como o código deve se comportar, de uma forma que se pareça com documentação.

  • A sintaxe da expectativa é relativamente nova. Antes de oexpect() método foi introduzido (em 2012), RSpec usava uma sintaxe diferente que era baseada no should()método. A expectativa acima é escrita assim na sintaxe antiga:(1 + 1).should eq(2).

Você pode encontrar a sintaxe RSpec antiga para Expectativas ao trabalhar com um código mais antigo baseado ou uma versão anterior do RSpec. Se você usar a sintaxe antiga com uma nova versão do RSpec, verá um aviso.

Por exemplo, com este código -

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

Ao executá-lo, você obterá uma saída semelhante a esta -

. 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 menos que seja necessário usar a sintaxe antiga, é altamente recomendável que você use expect () em vez de should ().