2013-01-02 2 views
5

capybara를 사용하여 로그인하십시오. rspec과 capybara를 사용하여 로그인을 테스트 할 수 없기 때문에 뭔가 잘못된 것 같습니다. 임 사용자에게 다음Rspec capybara 사용자가 로그인 할 수 없습니다.

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 

를 정의하는 공장 소녀를 사용하여 여기 내 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 

입니다 그리고 또한 내 사용자 모델을위한 확

+0

에서 나는 마침내 여기 http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara 대답 – xecutioner

+0

내가 해결책을 발견 발견 http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara – xecutioner

답변

3
로 설정되어 내 사양

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 

입니다

확인 가능한 모든 데이터 요소를 추가하는 대신

0123을 사용해야합니다.
@user = FactoryGirl.build(:user) 
@user.skip_confirmation! 
@user.save! 

그런 다음 시나리오

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

@bullfrog를 도와 주셔서 감사하지만 문제는 여전히 지속됩니다. 뭐가 이상한 때 사용자가 테스트 데이터베이스에 존재하지 확인합니다. – xecutioner

+2

이 http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara를 사용하여 해결책을 찾았습니다. – xecutioner

관련 문제