2

Web アプリのログイン テストをセットアップしようとしています。サインインが成功すると、ユーザーはダッシュボードにリダイレクトされます。ただし、ダッシュボードの仕様では、factory girl で作成したユーザーはサインインできません。

しかし、私が使用する場合

attr = Factory.attributes_for(:user)
user = User.create(attr)

それ以外の

user = Factory.create(:user)

できます。どちらの場合も、User.count は 1 を返します。

Gemfile

group :development, :test do
  gem 'selenium-webdriver', "~> 2.16.0"
  gem "capybara-webkit", "0.12.1"
  gem "capybara", "1.1.2"
  gem "database_cleaner", "0.8.0"
  gem "rspec-rails", " 2.11.0"
  gem 'capybara-screenshot', "0.2.1"
  gem "factory_girl_rails", "1.2"
  gem 'guard-spork', '0.3.2'
  gem 'spork', '0.9.0'
end

dashboard_spec.rb

it "should return 200 and redirect to dashboard if user is already signed in" do
  user = FactoryGirl.create(:user, :password => "password", :password_confirmation => "password")

  puts user.count  # 1

  visit "/users/sign_in"

  # log in user
  fill_in "user_email", :with => user.email
  fill_in "user_password", :with => "password"
  click_on "Sign in"

  page.status_code.should == 200
  current_path.should eq("/u/dashboard")
end

rspec_helper.rb

require 'rubygems'
require 'spork'

Spork.prefork do
  ENV["RAILS_ENV"] ||= 'test'
  require File.expand_path("../../config/environment", __FILE__)

  require 'rspec/rails'
  require 'capybara/rspec'
  require 'capybara/rails'

  Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

  RSpec.configure do |config|

    config.mock_with :rspec

    # Cleaner
    DatabaseCleaner[:mongoid].strategy = :truncation
    config.before(:each) { DatabaseCleaner[:mongoid].clean }
    config.after(:each) { DatabaseCleaner[:mongoid].clean }

  end

  Capybara.javascript_driver = :webkit

end

Spork.each_run {}
4

0 に答える 0