2013-01-02 17 views
5

Testgerät anmelden mit Capybara. Es scheint, dass etwas nicht stimmt, da ich das Anmelden mit rspec und Capybara nicht testen kann. Im mit Fabrik Mädchen BenutzerRspec capybara Benutzer kann sich nicht anmelden

FactoryGirl.define do 
factory :user do 
    email '[email protected]' 
    password 'bhaktapur' 
    password_confirmation 'bhaktapur' 
    admin true 
    name 'admin' 
    confirmation_sent_at "#{DateTime.now}" 
    confirmation_token 'anupsumhikichiki' 
    confirmed_at "#{DateTime.now}" 
    username 'username' 
end 
end 

Hier mein spec_helper.rb

# This file is copied to spec/ when you run 'rails generate rspec:install' 
ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../config/environment", __FILE__) 
require 'rspec/rails' 
require 'rspec/autorun' 
require 'capybara/rspec' 
require 'database_cleaner' 
# FactoryGirl.find_definitions 
Capybara.current_driver = :selenium 
# Requires supporting ruby files with custom matchers and macros, etc, 
# in spec/support/ and its subdirectories. 
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f} 
RSpec.configure do |config| 
config.include Devise::TestHelpers, :type => :controller 
config.before(:suite) do 
DatabaseCleaner.strategy = :transaction 
DatabaseCleaner.clean_with :truncation 
end 

config.before(:each) do 
DatabaseCleaner.start 
end 
# config.after(:each) { } 
config.after(:each) do 
DatabaseCleaner.clean 
Warden.test_reset! 
end 
config.fixture_path = "#{::Rails.root}/spec/fixtures" 
config.use_transactional_fixtures = false 

# If true, the base class of anonymous controllers will be inferred 
# automatically. This will be the default behavior in future versions of 
# rspec-rails. 
config.infer_base_class_for_anonymous_controllers = false 
end 

zu definieren Und hier ist meine spec

require_relative '../spec_helper.rb' 
include Warden::Test::Helpers 
Warden.test_mode! 

feature "the signin process" do 
before :each do 
@user_attr = FactoryGirl.attributes_for(:user) 
# @user = FactoryGirl (:user) 
User.create!(@user_attr) 
end 

scenario "signs me in" do 
    # login_as @user, :scope => :user 
    visit '/' 
    fill_in 'Login', :with => "[email protected]" 
    fill_in 'Password', :with => "bhaktapur" 
    click_button 'Sign in' 
    page.should have_content "Signed in successfully" 
    Warden.test_reset! 
end 
end 

Auch mein User-Modell zu confirmable

gesetzt
+0

fand ich endlich die Antwort hier http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara – xecutioner

+0

ich die Lösungen gefunden mit http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara – xecutioner

Antwort

3

Anstatt alle bestätigbaren Datenpunkte hinzuzufügen, sollte

verwendet werden
@user = FactoryGirl.build(:user) 
@user.skip_confirmation! 
@user.save! 

Dann in Ihrem Szenario

fill_in 'Login', :with => @user.email 
fill_in 'Password', :with => @user.password 
+0

Vielen Dank für den Versuch, @bullfrog zu helfen, aber das Problem besteht immer noch. Was komisch ist, ist, wenn ich überprüfe, ob der Benutzer in der Testdatenbank existiert. – xecutioner

+2

Ich fand die Lösung mit dieser http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara – xecutioner

Verwandte Themen