2013-01-02 29 views
5

Thử nghiệm đăng nhập bằng cách sử dụng capybara. Có vẻ như đã xảy ra sự cố vì tôi không thể kiểm tra đăng nhập bằng rspec và capybara. Im sử dụng nhà máy cô gái để xác định người sử dụngRspec capybara Người dùng không thể đăng nhập

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 

Đây là spec_helper.rb tôi

# 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 

Và đây là spec của tôi

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 

Ngoài ra mô hình tài khoản của tôi được thiết lập để confirmable

+0

tôi cuối cùng đã tìm thấy câu trả lời ở đây http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara – xecutioner

+0

Tôi tìm thấy giải pháp sử dụng http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara – xecutioner

Trả lời

3

Thay vì thêm tất cả các điểm dữ liệu có thể xác nhận .. nên sử dụng

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

Sau đó, trong kịch bản của bạn

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

Cảm ơn bạn đã cố gắng giúp @bullfrog nhưng sự cố vẫn tiếp diễn. Whats lạ là khi tôi kiểm tra người dùng không tồn tại trong cơ sở dữ liệu thử nghiệm. – xecutioner

+2

Tôi đã tìm thấy giải pháp bằng cách sử dụng http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara này – xecutioner

Các vấn đề liên quan