Pergunta

Estou configurando um app Rails e eu acabado de fazer alguns testes de unidade e meu amigo disse que, aparentemente, luminárias não são mais fresco e as pessoas já estão usando RSpec ou shoulda. Eu queria saber quais são os benefícios reais são para usar esses outros toolkits. Qualquer informação em tudo é apreciado.

-fREW

Foi útil?

Solução

RSpec e estruturas similares são ferramental projetado para ajuda em Behavior Driven Development. Eles não são apenas uma maneira mais bonita para testes de escrita, embora eles ajuda com isso.

Há uma abundância de informações sobre BDD aqui: http://behaviour-driven.org/ E wikipedia: http://en.wikipedia.org/wiki/Behavior_Driven_Development

Há muitos benefícios para a lista aqui, então eu recomendo navegar nesse local um pouco.

Outras dicas

Eu pessoalmente prefiro Shoulda para RSpec. Acho que Shoulda tem uma sintaxe menos mágica do que RSpec. Meu problema com RSpec é que sim, é muito legível quando eu lê-lo em voz alta, mas quando eu começar a escrevê-lo, hmmmm, eu nunca tenho certeza como uma determinada afirmação deve ser escrito. Prag Dave explica o problema melhor do que eu . Ele também gosta Shoulda e tem alguns exemplos .

Há duas coisas diferentes aqui:

A primeira coisa é o que estrutura a ser usado para escrever testes / especificações. Aqui você pode escolher entre Test :: Unit, RSpec, Shoulda e assim por diante. A escolha é se você quer fazer TDD tradicional (Test :: Unit) ou se você preferir as formas alternativas de pensar sobre o comportamento especificando defendida por desenvolvedores como David Chemlinsky (RSpec e até certo ponto Shoulda).

A segunda coisa é como lidar com dados de teste. Há Rails luminárias e alternativas desgined com outros objetivos, como o FixtureReplacement plug-in . Antes Rails 2.0 luminárias teve problemas práticos significativos e bem documentados. Muitas das questões práticas foram fixados em Rails 2.0. No entanto luminárias pode levar a acoplamento teste inadvertida e algumas das alternativas para tentar evitar isso.

RSpec é muito mais poderoso, porque é muito mais fácil para ambos os testes de leitura e gravação. É também muito elegante ao usar mocks e stubs, um conceito que se tornará extremamente útil quando você começar a usá-los em seus testes. Experimentá-lo em um aplicativo simples de teste (NON TRILHOS!) E você verá como elegante suas especificações são contra o teste padrão equivalente.

Confira a grande prova de Josh Susser Dance-off Framework para uma comparação dos quadros populares do rubi de teste.

Se você está construindo uma aplicação grande e não tem uma equipe que são todos muito bom em escrever código que pode ser bem testado com testes caixa preta e estão preparados para abraçar totalmente usando / depuração muitas simulações e topos dissociado , não vá pela estrada fábrica.

Onde quer que você leia sobre como Factories impressionante é você verá uma pequena ressalva sobre como fábricas pode não ser viável em um aplicativo grande, porque eles são um pouco mais lento do que acessórios.

Mas "um pouco mais lento" é realmente ordens de magnitude mais lenta.

As fábricas não são significativamente mais fácil de código de dispositivos elétricos que usam etiquetas para ids, desde que você mantenha as luminárias organizados. E em alguns casos, as fábricas são mais difíceis de depuração.

Apenas esta noite eu converti uma única fábrica de luminárias, eo tempo de execução do arquivo de teste que usou passou de 65 segundos para 15 segundos, embora apenas cerca de 15% dos testes em que o uso de arquivos de teste que de fábrica.

Se você usar minitest você pode executar os testes em ordem aleatória; isto irá rapidamente revelar quaisquer dados acoplamento entre testes. (Não sei se rspec tem a opção de ordem de teste Randomize)

Test :: Unit é bom para pequenas aplicações. Mas há uma série de benefícios para usar o teste frameworks como Shoulda ou RSpec, e. g. contextos !!

Não vejo Shoulda e RSpec em um ou-ou-relação. Eu uso Shoulda como um substituto para RSpec quando se trata de testes-afirmação individual. Eu realmente gosto as Shoulda one-liners, mas escrever matchers é muito mais fácil em RSpec. Portanto, meu conselho é para usar as diferentes ferramentas de teste onde eles se encaixam melhor.

Você pode usar testar framework como o pepino que é ainda mais rápido do que RSpec ..

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top