Duas dicas rápidas sobre RSpec
- Não utilize a sintaxe abaixo:
- 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:
something.should != valueA 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 == valueE 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
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