O DatabaseCleaner ainda é necessário com as especificações do sistema Rails?
Pelo que li sobre as novas especificações do sistema Rails 5.1, entendi que o Rails agora lida com transações de banco de dados internamente.
DeBlog do Rspec: "[anteriormente] seus testes e seu código sob teste não podem compartilhar uma transação de banco de dados e, portanto, você não pode usar o mecanismo interno do RSpec para reverter as alterações no banco de dados, exigindo uma jóia como um limpador de banco de dados. Com os testes do sistema, a equipe do Rails fez o trabalho duro para garantir que esse não seja o caso e, assim, você possa usar com segurança o mecanismo do RSpec, sem precisar de uma gema extra ".
Minha experiência é diferente:
Meus testes de recursos do Rspec foram aprovados após a atualização para o Rails 5.1.Renomeei o 'recurso' especificações para se tornar 'sistema' especificações. Todos os testes foram aprovados.Eu removi oLimpador de banco de dados gem e removeu todas as referências derails_helper.rb
. Os testes JS agora falham devido avalidates uniqueness
erros. Os testes não JS passam.Meus testes são muito simples.
let(:subject) { page }
let(:user) { create :user, name: "TestUser" }
it "displays the user page", :js do
visit user_path(user)
it is_expected.to have_content "TestUser"
end
Com o limpador de banco de dados desativado e:js => true
eu recebouser named TestUser already exists
. Com:js => false
o teste passa.
Qual é a situação atual com testes do sistema e rspec? O Rails manipula transações de banco de dados internamente ou o Database Cleaner ainda é necessário? Alguém já encontrou isso ou pode me indicar informações relevantes?