Fork me on GitHub

Keep Learning Conhecimento nunca é o bastante

Postado em
26 September 2010 @ 14:27

Tag(s)
RSpec, Ruby

Duas dicas rápidas sobre RSpec

  1. Não utilize a sintaxe abaixo:
  2. something.should != value

    A razão para isso é que != é uma expressão, enquanto ==, >=, <= e outros são métodos (podermos utilizá-los sem o "." é açúcar sintático da linguagem). Dessa forma, por mais que na maioria dos casos isso não incorra em efeitos indesejados (a expressão retorna um booleano, o que, em geral, basta) mas a equipe que desenvolve o RSpec recomenda evitar o uso, preferindo a sintaxe abaixo:

    something.should_not == value

    E para verificar essa diferença, veja abaixo:

    ree-1.8.7-2010.02 > 1.== 1
     => true 
    ree-1.8.7-2010.02 > 2.>= 1
     => true 
    ree-1.8.7-2010.02 > 2.!= 1
    SyntaxError: compile error
    (irb):3: syntax error, unexpected tNEQ
    2.!= 1
        ^
    	from (irb):3
  3. Essa é até bem conhecida, mas vejo um número considerável de pessoas fazendo outra coisa tentando fazer isso: ao configurar callbacks para executar código de setup/teardown antes ou depois de toda a suíte, no bloco de configuração, podemos controlar a ordem com os métodos prepend_before e append_after:
Spec::Runner.configure do |config|
  # antes da suite
  config.before(:suite) do #alias para append_before (ou seja, depois de outros blocos "before")
    # fazer alguma coisa, provavelmente setup
  end
 
 # depois da suite
  config.after(:suite) do #alias para prepend_after (ou seja, antes de outros blocos "after")
    # fazer alguma coisa, provavelmente cleanup
  end
 
  # Podemos ter um controle mais fino da ordem de execução dos callbacks
 
  # antes de tudo, inclusive do bloco "config.before" um pouco acima
  config.prepend_before(:suite)
    # setup do setup ;)
  end
 
  # após tudo, inclusive do bloco "config.after" um pouco acima
  config.append_after(:suite)
    # teardown do teardown ;)
  end
end

1 Comentário

[…] This post was mentioned on Twitter by Lucas Húngaro, Diego R. V.. Diego R. V. said: RT @lucashungaro: "Duas dicas rápidas sobre RSpec" ~ http://bit.ly/c80NUS #blog […]


Deixe um comentário