Marcio Trindade

Melhorando a velocidade dos testes que usam devise.

Recentemente o @leobessa fez um post no twitter com um link desta wiki que mostra como você consegue melhorar a velocidade dos seus testes que usam o Devise, no caso dele a melhora foi de 54.43 para 9.51 segundos.

Lógico que eu fiquei bem curioso e fiz alguns testes nos meus projetos, neste blog a melhora não foi muito grande por que o meu modelo de usuário não tem nada além do devise, logo tenho poucos testes que precisam criar um usuário e uso mock sempre que possível, porém em um outro projeto onde o model de usuário tem muito mais funcionalidades e testes que presistem no banco a melhora foi bem mais consideravél passando de 62.6 pra 33.4 segundos, quase metade do valor.

A alteração que precisa ser feito é bem simples, basta alterar o stretches pra 1 no ambiente de teste.

config/initializers/devise.rb
# ==> Configuration for :database_authenticatable
# For bcrypt, this is the cost for hashing the password and defaults to 10. If
# using other encryptors, it sets how many times you want the password re-encrypted.
config.stretches = Rails.env.test? ? 1 : 10

Acredito que esta simples alteração vai melhorar seus testes também, se você puder coloque seus resultados nos comentários.