2013-01-02 19 views
5

Testowanie wymyślić zalogować za pomocą kapibara. Wygląda na to, że coś jest nie tak, ponieważ nie mogę przetestować logowania za pomocą rspec i kapibary. Im przy Dziewczyna z fabryki zdefiniować użytkownikowiRspec capybara Użytkownik nie może się zalogować

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 

Tu jest mój 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 

A oto moja specyfikacja

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 

Również mój model użytkownika jest ustawiona na POTWIERDZALNE

+0

końcu znalazłem odpowiedź tutaj http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara – xecutioner

+0

znalazłem rozwiązania przy użyciu http://stackoverflow.com/questions/6576592/failing-to-test-devise-with-capybara – xecutioner

Odpowiedz

3

Zamiast dodawać wszystkie potwierdzane punkty danych .. należy użyć

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

Następnie w swoim scenariuszu

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

Dziękujemy za próbę pomocy @ Bullfrog, ale problem nadal występuje. Co dziwne, kiedy sprawdzam, czy użytkownik istnieje w testowej bazie danych. – xecutioner

+2

Znalazłem rozwiązanie za pomocą tego http://stackoverflow.com/questions/6576592/failing-to-test-devise-w-capybara – xecutioner

Powiązane problemy