2011-10-14 4 views
3

J'ai une spécification de demandes qui rend plusieurs appels à visiter dans un seul bloc (visites/sessions/new 'et visites'/admin '). Cela se traduit par:Plusieurs appels à visiter avec RSpec et Capybara

ActionView::Template::Error: 
     undefined local variable or method `view_factory' for #<#<Class:0x007fedda1d5180>:0x007fedda1bb118> 

Un moyen de résoudre ce problème? Merci. Le code est:

describe "Admin" do 

    before do 
    visit new_session_path 
    fill_in "Email", with: user.email 
    fill_in "Password", with: user.password 
    click_button "Submit" 
    end 

    describe "GET /admin" do 
    it "should be successful" do 
     visit admin_dashboard_path 
    end 
    end 

end 

Mise à jour:

Après quelques recherches, je trouve que les erreurs n'occure lors de l'exécution avec Spork. Voici mon spec_helper.rb flile qui configure Spork:

require 'rubygems' 
require 'spork' 
require 'simplecov' 

ENV["RAILS_ENV"] ||= 'test' 

SimpleCov.start if ENV["COVERAGE"] 

Spork.prefork do 

    require File.expand_path("../../config/environment", __FILE__) 
    require 'rspec/rails' 
    require 'capybara/rspec' 

    Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 

    RSpec.configure do |config| 
    config.mock_with :mocha 

    config.include Auth::Helper 
    end 

end 
+0

il fonctionne avec un seul appel à visiter? J'imagine que quelque chose ne va pas, mais que vous n'obtiendrez pas la première visite non plus ... – froderik

+0

@froderik Ouais, c'est ce que je pense aussi. Je viens de me rendre compte que cela ne fonctionne que lorsque vous utilisez Spork (https://github.com/timcharper/spork). –

+1

Des progrès à ce sujet? J'ai le même problème: erreur se produit uniquement lors de l'utilisation de spork et semble liée à ActiveAdmin –

Répondre

1

J'ai eu un semblable problème et trouvé une solution de contournement. Je suppose que view_factory est une méthode d'assistance définie dans un plugin et il est inclus à l'aide de l'application avec quelque chose comme ActionController::Base.helper FactoryHelperModule.

Ce que je l'ai fait était d'inclure l'extrait suivant à mon app/helpers/application_helper.rb:

if Rails.env.test? 
    include FactoryHelperModule 
end 

Si les méthodes d'assistance sont dans un module et si les méthodes d'assistance sont déclarées comme le mien, il y a une chance que cela fonctionne. Je n'ai pas encore trouvé pourquoi cela arrive.

BTW, je suis sur des rails 3.0.4 et Spork 0.9.0.rc9

0

Je ne sais pas si cela va résoudre votre problème, mais before doit être à l'intérieur du bloc est passé à describe:

describe "GET /admin" do 
    before do 
    visit new_session_path 
    fill_in "Email", with: user.email 
    fill_in "Password", with: user.password 
    click_button "Submit" 
    end 

    it "should be successful" do 
    visit admin_dashboard_path 
    end 
end 
+0

Désolé le code que j'ai collé était juste un extrait de la spécification complète.Il contient un décrire autour de tout (et donc l'avant est autorisé où il est). J'ai mis à jour l'exemple. –

Questions connexes