Capybara を使用していくつかの統合テストを行っていますが、テストの実行中に問題が発生しています。私が持っているセットアップは、テストの前、または少なくとも実行される2番目のテストの前に実行されていないようです。これまでに行ったテストは次のとおりです。
require 'test_helper'
class UserSignupTest < ActionDispatch::IntegrationTest
setup do
FactoryGirl.create(:user_role)
end
test "user organic signup" do
visit new_user_registration_path
assert page.has_content?('Sign up for Connectedtrips')
fill_in('Email', :with => "hugo@gmail.com")
fill_in('First name', :with => "Hugo")
fill_in('Last name', :with => "KH")
choose("is_teacher_no")
choose("owns_center_no")
fill_in("Password", :with => "password")
fill_in("Password confirmation", :with => "password")
click_button("Sign up")
assert page.has_content?("Your registration is complete - thanks for joining!")
end
test "teacher organic signup" do
visit new_user_registration_path
assert page.has_content?('Sign up for Connectedtrips')
fill_in('Email', :with => "another@gmail.com")
fill_in('First name', :with => "Another")
fill_in('Last name', :with => "")
choose("is_teacher_yes")
choose("owns_center_no")
fill_in("Password", :with => "password")
fill_in("Password confirmation", :with => "password")
click_button("Sign up")
assert page.has_content?("Your registration is complete - thanks for joining!")
end
end
そして、これが私のテストヘルパーのコードです。できる限り設定しようとしましたが、Active Recordの代わりにDatamapperを使用しているため、データベースクリーナーが必要かどうかはわかりません。これが違いを生むかどうかはわかりません。
ENV["RAILS_ENV"] = "test" require File.expand_path('../../config/environment', FILE ) require 'rails/test_help' require 'capybara/rails' require 'database_cleaner'
module ActionController
class IntegrationTest
include Capybara::DSL
DataMapper.auto_migrate!
def teardown
DatabaseCleaner.clean
Capybara.reset_sessions!
Capybara.use_default_driver
destroy_all
end
def destroy_all
# destroying all my tables here
end
end
end
これは私が受け取っているエラーです:
UserSignupTest
PASS test_teacher_organic_signup (0:00:00.929)
ERROR test_user_organic_signup (0:00:00.998)
ERROR: insert or update on table "users" violates foreign key constraint "users_role_fk"
DETAIL: Key (role_id)=(1) is not present in table "roles".
これを解決する方法がよくわかりません。助けていただければ幸いです。