config.cache_classes = falsificação de testes rspe

Estou seguindo o Tutorial Ruby on Rails de Michael Hartl (railstutorial.org

Em algum momento, eu me cansei de falhar nos testes, apenas porque os testes usavam versões antigas em cache das classes, então desativei o config.cache_classes no ambiente de teste. Isso resolveu o problema e tudo correu bem por algum tempo.

Até tentei implementar os testes de integração no capítulo 8.4.3. Nesse ponto, os dados inseridos no banco de dados com

it "should make a new user" do
    lambda do
      visit signup_path
      fill_in "Name",         :with => "Example User"
      fill_in "Email",        :with => "[email protected]"
      fill_in "Password",     :with => "foobar"
      fill_in "Confirmation", :with => "foobar"
      click_button
      response.should have_selector("div.flash.success",
                                    :content => "Welcome")
      response.should render_template('users/show')
    end.should change(User, :count).by(1)
  end

permaneceria no banco de dados após cada teste, portanto, apenas a primeira vez que esse teste fosse executado funcionaria, depois disso sempre falha até eu esvaziar manualmente o banco de dados. Além disso, funcionou. Mas agora no capítulo 9, novamente o teste de integração falha:

describe "when signed in" do

before(:each) do
  @user = Factory(:user)
  visit signin_path
  fill_in :email,    :with => @user.email
  fill_in :password, :with => @user.password
  click_button
end

it "should have a signout link" do
  visit root_path
  response.should have_selector("a", :href => signout_path,
                                     :content => "Sign out")
end

Desta vez, simplesmente não funciona, o usuário não está logado e a página resultante não possui um link de logout, apenas o link normal de logon. Ao testar isso em um navegador da web, ele funciona be

Demorei horas e dias pesquisando na Internet e testando coisas diferentes e, finalmente, encontrei a solução: reativando o config.cache_classes. Agora, ele funciona perfeitament

Alguém pode me explicar por que config.cache_classes faz com que os testes falhem? E como posso desativar o cache sem atrapalhar meus testes?

Desde já, obrigado

tenciosamente, Tobias

questionAnswers(2)

yourAnswerToTheQuestion