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

3 Responses to “Como vocês fazem o "describe" das suas specs?”

  1. daniel lopes Says:
    Eu agrupo os describes por funcionalidade… por exemplo.
    describe "name routes" do
      it "should route users_path to users/" 
    end
    
    Acho assim interessante pois quando eu for rodar os examplos pelo textmate eles ficam organizados direitinho por funcionalidade.
  2. Vitor Pellegrino Says:

    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!

  3. Felipe Mesquita Says:

    Procuro utilizar o describe para dividir os contextos em que estou testando.

    Isso, IMHO, ajuda a deixar mais claro e organizado.

    abraço.

Deixe seu comentário