"Testes são coleções de questões e cenários que nos fornecem resultados consistentes que provam que nossa aplicação está fazendo o que nós esperamos que faça."
"A idéia dos testes é que você os escreva ao mesmo tempo em que escreve sua aplicação. No fundo, você está escrevendo duas aplicações. À medida que sua aplicação cresce e se torna mais complexa, você cria mais testes. Rodar estes mesmos testes novamente irá ajudá-lo a descobrir se você "quebrou" alguma coisa ao longo do caminho."
# hello_test.rb
1. require 'test/unit'
2.
3. class HelloTestCase < Test::Unit::TestCase
4. def test_hello
5. assert true
6. end
7. end
1. Essa linha sempre existirá nos seus arquivos de teste. Ela "inclui" uma gem que contém todas as classes e funcionalidades para escrever e rodar testes unitários.
3. Temos a classe HelloTestCase que herda de Test::Unit::TestCase. Todos os testes que você criar serão subclasses de Test::Unit::TestCase. O TestCase fornece o "lugar" onde seus testes irão viver. Mais sobre isso em um bit.
4. Temos um método chamado test_hello. Todos os testes precisam seguir a seguinte convenção: seus nomes devem começar com os 4 caracteres test, como test_hello, testme ou testearosa. Se você criar um método que não começa com "test", ele não será reconhecido como um teste e não será rodado automaticamente.
5. Temos uma assertion (afirmação). É através das assertions que você verifica se o trabalho está sendo feito corretamente. Há vários tipos diferentes de assertions, que irão lhe ajudar a certificar-se de que está tudo nos conformes.
Existem 4 figuras principais nos testes:
As Assertions (afirmações):
Uma Assertion é uma linha de código que avalia um objeto (ou expressão) para resultados esperados. Exemplos:
is this value = that value?
is this object nil?
does this line of code throw an exception?
is the user's password greater than 5 characters?
Os Testes:
Um teste é um método que contém assertions (afirmações) que representam um cenário particular a ser testado.
Por exemplo, nós podemos ter um método teste chamado text_valid_password. Para esse teste passar, podemos checar:
- senha possui 4 ou mais caracteres
- senha não é a palavra "senha"
- senha não é somente espaços.
Se todas essas assertions forem verdadeiras, o teste irá passar.
Fonte: Guia Rails - Testes