:: Topo :: doCoding :: Projectos Tutoriais :: Tutoriais RubyOnRails ::
RubyOnRailsBlogTDD
Referências
Tutorial
Seguir o Ritmo TDD:
- Criar um UnitTest - antes do código propriamente dito (“solução ao problema”) é preciso codificar o teste que validará essa solução. O âmbito do problema, requisitos e especificações tem que estar fechado.
- Executar o UnitTest - este teste deve falhar (red) antes do código da solução ser escrito.
- Codificar a Solução - escrever o código seguindo as boas práticas DRY (Dont Repeat Yourself), YAGNI (You Ain't Gonna Need It) e KISS (Keep It Simple and Straight). Ou seja, deve-se escrever somente o mínimo necessário para o UnitTest passar.
- Executar o UnitTest - este teste deve passar (green) após o código da solução estar pronto. Podem ser necessárias várias iterações sobre o código da solução, mas a final será sempre green.
- Code Refactoring - aproveitar para limpar o código, melhorar a legibilidade do mesmo e retirar código em excesso ou “ruído”. Podem ser necessárias várias iterações sobre o código da solução, mas a final manterá sempre o estado green.
- Passar ao próximo UnitTest - que deverá falhar (red).
Por isso se usa normalmente o termo “red-green-red”.
Tal como referido no artigo, existem vários tipos diferentes de testes no Rails:
- testes unitários - que são responsáveis pelos testes de modelos;
- testes funcionais, responsáveis por testar os controllers;
- testes de integração, responsáveis por testar múltiplas camadas da aplicação e a interligação entre elas.
Entendo o conceito, mas falta vê-lo aplicada na prática e em particular com código que envolva interacção com o utilizador. Neste caso, com o Rails, até que ponto será a metodologia TDD adequada sobre MVC?
Quickstart
First Steps
rails RubyOnRailsBlogTDD --svn --database=sqlite3 cd RubyOnRailsBlogTDD svn commit -m "Initial RubyOnRailsBlogTDD Project revision." piston import http://mydev/svn/doCoding/RubyOnRails/vendors/plugins/custom_rake_tasks vendor/plugins/custom_rake_tasks rake svn:init rake db:config DB=RubyOnRailsBlogTDD ADAPTER=sqlite3 FORCE=true svn commit -m "Configure DataBase for RubyOnRailsBlogTDD Project."
Server
Numa outra sessão/terminal, para manter o serviço a correr durante o desenvolvimento, é preciso lançar o WEBrick:
Launch WEBrick Server
cd /srv/prj/doCoding/TutorialProjects/RubyOnRails/projects/RubyOnRailsBlogTDD script/server
Launch WEBrick Server
ruby script/server
Pelo que pode-se então aceder a http://localhost:3000 através de um browser:
Iterações
Considerações
A versão 2.0.2 do Rails com o Cygwin dá o seguinte erro quando se tenta criar uma nova aplicação: No such file or directory - /dev/urandom. A mesma versão 2.0.2 em Windows corre sem problemas, com o mesmo comando de criação:
Criar Aplicação
rails RubyOnRailsBlogTDD --svn --database=sqlite3O Geany não se tem revelado suficientemente bom para ser usado no Windows. Tenho problemas de copy & paste e não é possível executar o código dentro do IDE. Torna-se assim, por enquanto, mais um Editor de Texto do que um IDE. E para isso é melhor o NotePad++ ou outros equivalentes. Se precisar de um IDE terei que recorrer ao Eclipse ou ao NetBeans.
Grande mérito do Nando Vieira na elaboração - à prova de bala - deste tutorial. Muito bom.
ToDo
- Fix Rails Error: Unable to access log file.
Please ensure that /srv/prj/doCoding/TutorialProjects/RubyOnRails/projects/RubyOnRailsBlogTDD/log/development.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.
Discussion