Os testes vivem no diretório test dentro da aplicação rails. Dentro deste diretório, há 4 sub-diretórios; um para os testes de controller (funcional - functional), um para testes de modelo (unitários - unit), um para objetos mock (mocks) e um que apenas guarda os dados de exemplo (fixtures).
Para rodar estes testes, você simplesmente roda o script de teste diretamente:
ruby test/unit/my_good_old_test_unit.rb
Outra forma de rodar seus testes é:
- rake test_functional => para todar os testes de controller
- rake test_units => para rodar os testes de modelo.
rake db:test:prepare => prepara o banco de teste e carrega o esquema.
Fixtures é uma palavra-fantasia para "amostra de dados". Elas lhe permitem popular seu banco de teste com dados predefinidos antes de rodar seus testes. Fixtures são bancos independentes e assumem um de dois formatos: YAML ou CSV. Você pode encontrá-las no diretório test/fixtures. Você pode usar código ruby (entre <%%> para gerar seus dados).
- YAML: Formato bastante amigável, possui extensão .yml. Os registros são organizados cada um em um parágrafo, e cada campo em uma linha. Exemplo:
# comentário
david:
id: 1
name: David Heinemeier Hansson
birthday: 1979-10-15
profession: Systems development
steve:
id: 2
name: Steve Ross Kellock
birthday: 1974-09-27
profession: guy with keyboard
- CSV: Fixtures também podem ser descritas usando um formato de arquivo no qual os valores são separados por vírgula. Esses arquivos ficam no mesmo diretório test/fixtures, mas possuem a extensão .csv. A primeira linha é o cabeçalho. Consiste em uma lista de campos separados por vírgula. Um registro por linha.Exemplo:
id, username, password, stretchable, comments
1, sclaus, ihatekids, false, I like to say ""Ho! Ho! Ho!""
2, ebunny, ihateeggs, true, Hoppity hop y'all
3, tfairy, ilovecavities, true, "Pull your teeth, I will"
Fixtures em Ação
Você precisa deixar claro que deseja carregar suas fixtures usando o método fixtures dentro do seu TestCase. Um teste de modelo user poderia ser assim:
# Allow this test to hook into the Rails framework.
require File.dirname(__FILE__) + '/../test_helper'
class UserTest < Test::Unit::TestCase
fixtures :users
# Count the fixtures.
def test_count_my_fixtures
assert_equal 5, User.count
end
end
Usando o método fixtures e colocando o símbolo do nome do modelo, o Rails irá automaticamente carregar as fixtures ao iniciar cada método de teste.
fixtures :users
Fonte: GuiaRails