Carlos Brando

Nome do Jogo

Shoulda 2.0

Outro projeto open-source que também participo e gosto muito é o Shoulda. Já tentei explicar no passado o motivo de gostar tanto deste projeto, mas acho que tem muito a ver com uma questão de puro gosto.

Pois bem, acabou de ser liberada a versão 2.0.2 do Shoulda e a principal novidade é que agora ele funciona 100% como um gem. Além disso, novas macros foram acrescentadas, bugs foram corrigidos e algumas funcionalidades foram removidas.

Para utilizar o Shoulda em seu projeto Rails 2.1+ a melhor forma é acrescentar o seguinte código no seu arquivo config/environment.rb:

Rails::Initializer.run do |config|
  config.gem 'thoughtbot-shoulda', :lib => 'shoulda/rails',
    :source => "http://gems.github.com"
end

Depois basta executar no terminal:

rake gems:install
rake gems:unpack

Entre as novidades, tivemos melhorias em macros existentes que prometem agilizar ainda mais a criação de testes, tais como o acréscimo das opções :equals e :class na macro should_assign_to. Com estas novas implementações fica fácil testar se o objeto devolvido é do tipo desejado ou mesmo igual a um objeto especifico.

should_assign_to :user, :equals => "@user", :class => User

A macro should_have_one também recebeu a opção :dependent:

should_have_one :address, :dependent => :destroy

Agora falando apenas de novidades, temos as novas macros should_change, should_not_change, should_filter_params, should_render_with_layout, should_render_without_layout, should_route, should_respond_with_content_type, should_return_from_session e o muito útil before_should.

Mais detalhes sobre o funcionamento de todas estas macros podem ser encontrados na documentação do projeto.

Algo interessante que também foi acrescentado ao projeto é a carga automática de macros customizadas. Caso você deseje criar suas próprias macros, basta criar uma pasta RAILS_ROOT/test/shoulda_macros e jogar lá dentro os arquivos com estas macros.

Gems e plugins também podem se beneficiar dessa vantagem. Se em qualquer um deles houver uma pasta shoulda_macros na raiz, todos os arquivos dentro da pasta também serão carregados automaticamente.

A única controvérsia desta versão, foi a remoção do método should_be_restful. Na verdade ele chegou a ser removido por alguns dias, mas depois voltou com uma mensagem de alerta avisando que em breve ele será removido definitivamente. Isto se dá pelo fato de que este método faz muita coisa de forma automática e não permite uma fácil localização do ponto onde um erro ocorre.

Um outro projeto também foi iniciado em paralelo ao desenvolvimento do Shoulda. O Woulda promete ser um repositório de macros e recursos que não cabem ao Shoulda, como macros especificas para testar alguns gems/plugins famosos.

Para quem está começando a brincar com o Shoulda segue uma lista de recursos interessantes:

O Bundle para o TextMate que estou mantendo junto com o Dr. Nic no GitHub já está atualizado com todos os recursos da versão 2.0.2.

Comments