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
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
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