2

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

これを解決する方法がよくわかりません。助けていただければ幸いです。

4

1 に答える 1

0

私はこれを解決し、自分の解決策を提示したいと思いました。私がしたことは、すべてのテーブルを破棄していたティアダウンで、Role テーブルが破棄されないようにしました。私が行ったセットアップについて:

Role.first(:name => "User") || FactoryGirl.create(:user_role)

これはやり過ぎかもしれません。とにかく問題は解決したと思います。

于 2012-10-10T16:27:16.060 に答える