Minitest: testes de model
O Minitest é o framework de testes padrão do Rails, e este app usa RSpec nos próprios testes. O curso lê o ActiveSupport::TestCase e a classe mãe dele, Minitest::Test, no código-fonte das gems instaladas. Roda assert_equal, assert_predicate e assert_difference contra um model ActiveRecord descartável no Postgres e mostra as mensagens de falha. Explica por que o ActiveRecord::TestFixtures está instalado mas nunca foi conectado. Por fim, traduz dois exemplos RSpec para Minitest e fecha com um desafio pequeno em Ruby puro.
O que você vai aprender
- ✓Como o ActiveSupport::TestCase é subclasse de Minitest::Test e herda Minitest::Assertions
- ✓Como o helper declarativo test transforma uma string num método test_ com define_method
- ✓Usar assert_equal e assert_predicate em models ActiveRecord e ler a saída de falha
- ✓Como o assert_difference e as assertions parecidas checam o que um bloco muda
- ✓Por que o ActiveRecord::TestFixtures depende do rails/test_help.rb e de um test/test_helper.rb
- ✓Como expectations do RSpec correspondem a assertions do Minitest, e onde não correspondem
O Minitest existe aqui: os testes deste app são RSpec, e esse é o ponto de partida
Os testes deste app ficam em spec/ e rodam com bundle exec rspec spec/. A linha 60 do Gemfile diz gem "rspec-rails". Não existe diretório test/, que é onde uma suíte Minitest ficaria. Se algum curso disser que este app "não tem testes", esse curso olhou a convenção errada.
Ler a aula completa grátis →Currículo
7 aulasO Minitest existe aqui: os testes deste app são RSpec, e esse é o ponto de partida
Mostra que os testes deste app são RSpec em spec/ e que o Minitest já vem instalado com o Rails.
ActiveSupport::TestCase: a classe sobre a qual todo teste de model em Minitest se apoia
Mostra que o ActiveSupport::TestCase é subclasse de Minitest::Test e como o helper test define métodos comuns.
assert_equal e assert_predicate, rodados contra um model ActiveRecord
Roda assert_equal e assert_predicate contra um model ActiveRecord descartável e mostra o diff Expected/Actual na falha.
assert_difference: o acréscimo do Rails, testando o que um bloco muda
Trata do assert_difference, acréscimo do ActiveSupport ao Minitest, com a avaliação antes e depois e a mensagem de falha.
ActiveRecord::TestFixtures: instalado, e nunca conectado neste app
Explica a nomeação dos arquivos de teste e por que o ActiveRecord::TestFixtures fica desconectado sem um test/test_helper.rb.
Lado a lado: o RSpec deste app, traduzido para Minitest
Traduz dois exemplos RSpec do spec de atualização de conta para Minitest e compara cada assertion lado a lado.
Juntando tudo: um framework válido que este app não escolheu
Revisa o modelo mental e as fontes do curso e propõe um desafio em Ruby puro: o mini_assert_difference.