これは、この質問で説明した問題に関連している可能性があると思います。
Factory Girl を使用してユーザー Factory を作成するときに、カピバラが Rails アプリでサインアップ フォームをテストできない理由がわかりません。エラーが発生し続けemail has already been taken
ます。これが私の工場です:
FactoryGirl.define do
sequence :email do |n|
"email#{n}@example.com"
end
factory :user do
email
password "secret"
password_confirmation "secret"
end
end
これが私のサインアップテストです:
require "test_helper"
describe "Signup integration" do
before(:each) do
visit signup_path
end
it "successfully routes to the signup page" do
page.text.must_include "Sign Up"
end
it "signs up a new user" do
user = FactoryGirl.create(:user)
fill_in "user_email", :with => user.email
fill_in "Password", :with => user.password
fill_in "Password confirmation", :with => user.password_confirmation
click_button "Create User"
current_path == "/"
page.text.must_include "Signed up!"
end
end
そして、これが私のtest_helper.rbです:
ENV["RAILS_ENV"] = "test"
require File.expand_path("../../config/environment", __FILE__)
require "minitest/autorun"
require "capybara/rails"
require "active_support/testing/setup_and_teardown"
class IntegrationTest < MiniTest::Spec
include Rails.application.routes.url_helpers
include Capybara::DSL
register_spec_type(/integration$/, self)
def last_email
ActionMailer::Base.deliveries.last
end
def reset_email
ActionMailer::Base.deliveries = []
end
end
class HelperTest < MiniTest::Spec
include ActiveSupport::Testing::SetupAndTeardown
include ActionView::TestCase::Behavior
register_spec_type(/Helper$/, self)
end
Turn.config.format = :outline
何が問題なのかよくわかりません。Capybarasave_and_open_page
メソッドを各行に追加すると、パスワード フィールドまで取得できますが、Capybara はパスワード フィールドに入力できません。email3@example.com
電子メール フィールドのような固有の電子メール アドレスを追加しますが、Factory Girl のパスワードを追加することはできません。テストにプレーンテキストのパスワードを入力すると (fill_in "Password", :with => "password")
フィールドに入力することはできますが、これをテストする適切な方法とは思えません。
また、アプリで行っているログイン テストに関連している可能性があるかどうかもわかりません。ログインテストでカピバラが別のユーザーとしてログインしていることが問題なのでしょうか? もしそうなら、どのようにテストのセッションを消去しますか?
最後に、関連する場合に備えて、これが私の gemfile です。
source 'https://rubygems.org'
gem 'rails', '3.2.8'
gem 'jquery-rails'
gem 'pg'
gem 'heroku'
gem 'taps'
gem 'sorcery'
gem 'bootstrap-sass'
gem 'simple_form'
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
group :test do
gem 'minitest'
gem 'capybara'
gem 'capybara_minitest_spec'
gem 'turn'
gem 'factory_girl_rails'
end