Como vocês fazem o "describe" das suas specs?
Isso pra mim sempre foi uma dúvida ao usar o rspec. Realmente não há forma correta. É uma opção pessoal no caso de um projeto particular ou de decisão em conjunto no caso de um projeto onde vários desenvolvedores participam.
Mas o fato é que eu nunca adotei nenhum padrão para isso. É uma coisa que tem me deixado um pouco incomodado. Em alguns modelos sigo o padrão de um describe para cada método, em outros segui padrões ligeiramente diferentes, como por exemplo testes relacionados a attributos em um describe, relacionamentos em outro describe e assim por diante. Ou seja, não há padrão. Há tempos atrás ouvi uma frase que nunca esqueci:
Quando dois padrões existem, não há padrão.
No Lucidus usávamos Test::Unit(quando o projeto começou o rspec ainda era muito pouco difundido) então o “padrão” para nós era pelo menos colocar os testes relativos juntos. Então os testes relativos a um mesmo método normalmente estavam juntos, em um “bloco”, um abaixo do outro. O rspec nos permite um pouco mais de organização. Mas fazer essa organização extra através dos describes proporciona algum benefício?
Então seguindo a idéia… nós precisamos discutir testes.
Qual opnião de vocês? Como vocês organizam seus describes? E o que vocês escrevem nele?
28.11.2008 03:18 AM




November 28th, 2008 at 12:29 PM Eu agrupo os describes por funcionalidade… por exemplo. Acho assim interessante pois quando eu for rodar os examplos pelo textmate eles ficam organizados direitinho por funcionalidade.
December 1st, 2008 at 06:20 AM
Mergulhão,
Além de dividir por funcionalidade, eu também procuro dividir por “contexto” que eu estou testando. Um exemplo seria:
describe ‘PUT /clientes/’ do describe ‘request com dados invalidos’ do it ‘deveria lancar uma execao’ it ‘deveria voltar para a pagina principal’ end describe ‘request valido’ do it ‘deveria acessar os dados do cliente’ it ‘deveria adicionar nova compra’ end end
Acho que assim fica mais fácil organizar e mais claro de enxergar testes que verificam situações diferentes de uma mesma funcionalidade ou método.
Grande abraço!
December 1st, 2008 at 09:45 AM
Procuro utilizar o describe para dividir os contextos em que estou testando.
Isso, IMHO, ajuda a deixar mais claro e organizado.
abraço.