2013-01-02 49 views
5

测试设计使用水豚登录。这似乎是错误的,因为我无法使用rspec和水豚测试登录。使用im工厂女孩来定义用户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 

这里是我的规格

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 

而且我的用户模型设置为可确定

+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

而不是添加所有可确认的数据点..应使用

@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

相关问题