2011-12-28 11 views
7

私はRSpec、Spork、Capybara、Capybara Mechanicを使ってFacebook接続を使用する登録パスの統合テストを書いています。それは正しく登録をナビゲートしますが、新しいユーザーはテストデータベースの代わりに開発データベースに作成されます。カピバラでテストデータベースを使用するには?

RSpecはテスト環境を使用するようにセットアップされており、私が仕様で実行しているモデルメソッドはすべてテストデータベースにヒットしましたが、すべてのUIアクションが開発にヒットしたことを確認しました。私は私の開発データベースで見ることができて、新しいユーザーが作成されていることをテストした後

it "go through registration path" do 
    print "RAILS_ENV: #{Rails.env}\n" # correctly prints 'test' 
    print "1) #{User.count}\n" # correctly shows the user count in my test database (zero) 

    Capybara.current_driver = :mechanize 

    visit root_path 
    click_link "register" 

    # Fill in Facebook Connect form 
    fill_in 'email', :with => "[email protected]" 
    fill_in 'pass', :with => "password" 
    click_button "Log In" 

    print "2) #{User.count}\n" # still shows zero users in the test database 

end 

は、ここに私のテストです。

私はdatabase_cleanerも設定しようとしましたが、それは助けにはなりませんでした。

capybaraがテストデータベースにヒットするように、私は何をする必要があるのか​​分かりますか?

レール3.1.3

RSpecの2.7.0

先割れスプーン0.9.0

カピバラ1.1.0

0.3.0.rc3

+0

あなた自身でこの問題を解決しましたか?私が取り組んでいるアプリでも同様の問題が発生しています。私はテストでレコードでログインしようとしていますが、レコードが存在しないと言っています。だから私はそれがdev環境を使用することに関連していると思っていたが、devにレコードを追加することは、それも存在しないと言っている。だから私はカピバラがrspecsテスト環境とは全く異なるデータベース/環境を使用しているかどうかはわかりません。 – JDutil

+0

修正についての私の答えを見てください。どのようにユーザーを作成していますか? FactoryGirlを使用してテストデータベースに挿入しています。 – Chris

+0

私はFactoryGirlも使用しています。レコードは、意図したとおりにテストデータベース内に作成されています。私はドライバをSeleniumやWebkitに変更するとブラウザがレコードとやりとりする必要がありますが、私はPOW設定が実行されていると考えていたので、ブラウザのdevモードでは、それはどちらの場合もそうではありません。 – JDutil

答えて

4

問題をカピバラ、機械化私は、テストと並行して動作する別個の開発サーバーを持っており、テストは同じアドレス/ポートにデフォルト設定されていました。私はspec_helper.rbに以下を追加して、Capybaraが別のポートを使用するようにして解決しました。

Capybara.run_server = true 
Capybara.server_port = 7000 
Capybara.app_host = "http://localhost:#{Capybara.server_port}" 
関連する問題