2013-01-14 3 views
0

Je suis en train de mettre en œuvre une fonctionnalité avec rspec2 et rails3, au fond, j'ai un modèle post que je suis en train de tester en créant un poste (je suis en utilisant un dispositif d'authentification)acceptation rspec2 tests avec capybara

c'est ma fonction

spec/acceptance/new_post_feature_spec.rb 

require 'spec_helper' 
require 'rspec/example_steps' 

feature "Creating a new post" do 
    include Devise::TestHelpers 
    before(:each) do 
    @request.env["devise.mapping"] = Devise.mappings[:user] 
    user = FactoryGirl.create(:user) 
    sign_in user 
    end 

    Steps "Add a new post" do 
    page.visit "/posts" 
    page.should have_content("New Post") 
    end 
end 

Mais j'obtiens cette erreur

undefined method `env' for nil:NilClass 

voici les nouveaux joyaux J'utilise

gem "rspec-rails", "~> 2.0" 
gem 'database_cleaner' 
gem 'capybara' 
gem "factory_girl_rails", ">= 4.1.0" 
gem 'rspec-example_steps' 

avec Guard/Spork

toute aide serait appréciée

Répondre

1

@request est une variable de test du contrôleur. Ce n'est pas ce que tu veux ici. En fait, dans les spécifications capybara, vous n'avez pas besoin de spécifier le mappage de conception et vous ne pouvez pas utiliser sign_in. Capybara lance un navigateur, vous devez lui dire d'aller à votre page de connexion et de vous connecter à travers les mêmes étapes que vous le feriez dans un navigateur.

Essayez ceci: (vous devrez peut-être modifier certains noms d'entrée et bouton)

let(:user) { FactoryGirl.create(:user) } 
before(:each) do 
    page.visit new_user_session_path 
    # note: use the email/password input names below if yours are different 
    page.fill_in "user[email]", :with => user.email 
    page.fill_in "user[password]", :with => user.password 
    page.click_button "Sign in" 
end 
+0

fonctionne parfaitement :) Merci beaucoup – sameera207

Questions connexes