Integração entre RSpec & TextMate
Como já disse anteriormente ando a trabalhar no CouchDB-Ruby driver. Como a coisa tem o seu nível de exigência decidi usar rspec, algo que já andava para fazer a algum tempo, de forma a melhorar a testagem do software que produzo e reduzir o tempo de implementação. Já agora aproveito para sugerir o ZenTest a quem quiser que o rspec corra em background.
Continuando: rspec é uma forma descritiva – tipo cenários em Use Case – para descrever os nossos testes. Em Ruby claro, dai o R :P

O resultado final fica assim. É catita e prático, já que evita mais uma ida a consola para escrever ‘spec filename.rb’! E é bastante parecida com a linguagem natural. Por exemplo – um dos meus primeiros testes é:
it "should connect to server and return a Server object" do
CouchDB.connect(HOST, PORT).should
be_kind_of(CouchDB::Server)
end
Não fiz commit de nada porque a implementaçao anterior do CouchDB-Ruby com JSON não está completa. Portanto não vale a pena ir espreitar que não está nada lá! Em breve, espero eu, podem ver os testes completos online.
De qualquer forma se estiverem interessados em experimentar o rspec basta:
- Instalar o rspec
sudo gem install rspec - Descobrir o path onde está o ruby e o rspec. Estes comandos são capazes de ajudar:
which ruby
gem environment - Com os meus paths basta correr:
export TM_RUBY=/usr/bin/ruby export TM_RSPEC_HOME=/Library/Ruby/Gems/1.8/gems/rspec-1.1.3 cd ~/Library/Application\ Support/TextMate/Bundles/ svn co svn://rubyforge.org/var/svn/rspec/trunk/RSpec.tmbundle
- Como o (meu) terminal não gosta de exports. Caso não funcione façam:
echo TM_RUBY=/usr/bin/ruby >> ~/.profile echo TM_RSPEC_HOME=/Library/Ruby/Gems/1.8/gems/rspec-1.1.3 >> ~/.profile
- Actualizar os Bundles do TextMate
Bundles > Bundle Editor > Reload Bundles
E pronto! Caso surjam dúvidas podem sempre consultar a documentação oficial do bundle rspec para TextMate. Que comece a diversão! Bem vá diversão é exagerar mas com rspec é pelo menos uma experiência mais agradável que o habitual quando se fala de testes.