5

私はしばらくカピバラを使っていますが、魔術は初めてです。Capybaraの:js => true機能なしで仕様を実行すると正常にログインできますが、仕様で:js => trueを指定しようとすると、ユーザー名/パスワードが見つからないという非常に奇妙な問題があります。

認証マクロは次のとおりです。

module AuthenticationMacros
  def sign_in
    user = FactoryGirl.create(:user)
    user.activate!
    visit new_sessions_path
    fill_in 'Email Address', :with => user.email
    fill_in 'Password', :with => 'foobar'
    click_button 'Sign In'
    user
  end
end

これは、次のような仕様で呼び出されます。

feature "project setup" do
  include AuthenticationMacros

  background do
    sign_in
  end

  scenario "creating a project" do
    "my spec here"
  end

上記のコードは正常に機能します。ただし、シナリオの仕様を(この場合)から変更すると

scenario "adding questions to a project" do

scenario "adding questions to a project", :js => true do

'不正なユーザー名/パスワード'の組み合わせでログインが失敗します。文字通り、唯一の変更は:js=>trueです。デフォルトのcapybarajavascriptドライバーを使用しています。(Firefoxをロードします)

ここで何が起こっているのでしょうか?私は完全に困惑しています。私はCapybara2.0.1、Sorcery0.7.13を使用しています。サインインページにはjavascriptがなく、[サインイン]をクリックする前のsave_and_open_pageは、ユーザー名/パスワードフィールドに正しい詳細が入力されていることを確認します。どんな提案も本当にありがたいです-私は途方に暮れています。

4

1 に答える 1

8

capybara doc によると、デフォルトのカピバラ JavaScript ドライバーは Selenium です。Selenium は別のスレッドで実行されるため、トランザクション フィクスチャを無効にする必要があります。そうしないと、Selenium スレッドがデータベースで作成したデータにアクセスできなくなります。https://github.com/jnicklas/capybara#using-capybara-with-testunitを参照してください。そのセクションには、トランザクション フィクスチャの無効化に関する次の注意事項があります。

于 2012-12-14T05:39:32.663 に答える