09.03.2009
Dojo 66 - Biblioteca de testes em Smalltalk
- Data: 02/03/2009
- Participantes: Mari, Hugo, Yoshi, Fabricio, Thiago, Lucas, Jorge, Rafael, Breno, Ettore, Adolfo, Gianluca
- Problema: Biblioteca de testes estilo "BDD" em Smalltalk (Squeak)
- Código: no github
Insatisfeitos com o SUnit, escolhemos brincar de escrever uma biblioteca de testes mais ao estilo RSpec do Ruby, em Smalltalk. Começamos discutindo as possíveis sintaxes, decidindo por algo como:
(1 = 1) should: #beTrue 1 should: #= to: 1
A implementação foi rolando na classe Object mesmo, em uma categoria especial que adicionamos.
Retrospectiva
Do ruim:
- Problema muito difícil para o conhecimento coletivo do dojo
- SUnit não tem muitos recursos
- A linguagem não tem guru de verdade, ficamos um pouco travados
- Confundimos: testes, linguagem, ambiente - uma bagunça
- Post-its amarelos pequenininhos
- Muita conversa no vermelho: tava difícil?
- Sintaxe Smalltalk: mais de um argumento exige que tenha palavra entre os argumentos
- True é classe, true é singleton, otherwise não é true
- Não tem substring (ou não achamos)
- Faz tempo que não tem post no blog :-( ==> resolvido!
Do bom:
- Squeak é igual à mãe do Fabs
- Muita novidade
- Terminamos com testes passando - malandramente, mas passando
- Method finder é da hora
- Save method WITH STYLE :-)
- nil
- Reflexão: "perform: #bla with: arg"
- Smalltalk é legal, apesar de estranho
- Symbol é String
- Solução de bem poucas linhas
- Pessoas novas, bastante gente
- Dojo continua muito legal (OBAA! XD)
Das discussões que rolaram durante e depois:
- Por algum motivo o ambiente do Squeak lembrou o Fabricio do projeto Alice - aprendendo a programar em Java, no qual você escreve programas que controlam bonequinhos 3D para aprender a linguagem.
- Discutimos "Monkey patch", ou seja, como colocar métodos no Object sem mudar o projeto Kernel do Squeak. Discutimos o conceito, mas não sabemos como fazer isso em Smalltalk, por isso adotamos a solução mais feia, que foi modificar o Kernel mesmo.
- Colocamos o método "should" no Object... ele deveria existir APENAS quando executando testes. Em produção, uma chamada a "should" deveria idealmente não ser reconhecida.
- Existe vida além do SUnit! Com um pouco de pesquisa, o Hugo acho o projeto SSpec que parece ser uma biblioteca de testes mais no estilo do que a gente queria. Legal! Como será a solução deles?