2011-11-11 7 views
3

私は、セレビオのドライバーでカピバラの上に私のアプリのキュウリ試験をしようとしています。テストステップでは、私は動的にユーザーを作成して、アプリケーションにログインします。しかし、ユーザーのログインは、作成したユーザーでは失敗します。 user_transactional_fixtureをfalseに設定しました。それでも、作成されたレコードはセレンアプリで利用できません。一人で管理者が は、与えられた管理ページにアクセスすることができる「[email protected]」私はとしてログインしている管理者 次のとおりです。ここでカレーバラでセレンを使ったダイナミックなレコード作成ができません

@browser シナリオがコード

機能のファイルです"[email protected]" ステップ定義ファイルを考えると

/"([^ \"] *)」である管理/実行する|メール|

ユーザー= Email.active.f ind_by_address(電子メール).try(:ユーザー)|| User.new({}:パスワード=>

'Monkey_123':password_confirmation => 'Monkey_123':LAST_NAME => '例'、:FIRST_NAME => '管理者')

user.update_attribute (:状態、 "アクティブ")

user.update_attribute(:terms_and_conditions_accepted、1)

user.groups < < Group.find(1)

user.primary_email || = Email.new( :アドレス=>電子メール、:状態=>電子メール::状態::アクティブ、

:EMAIL_TYPE =>メール::タイプ:: PRIMARY)

user.save!

私はカピバラやセレンdriveriを使用してテストを実行するブラウザを介し

作成したユーザーを使用して私のアプリにログインすることができません。

私は、特定のユーザーの作成を示したルビーデバッガを使用しようとしました。

後は

が始まるenv.rbファイル定義されている場合

?(ActiveRecordは::ベース)で、私のconfigです

require 'database_cleaner' 

DatabaseCleaner.strategy = :truncation 

rescue LoadError => ignore_if_database_cleaner_not_present 

エンド

エンド

カピバラ.server_port = 9887#または何でもいい番号ですか?

Capybara.app_host = "HTTP:// localhostを#{Capybara.server_port}" = 4

カピバラ

Capybara.default_wait_time。親切に、このためのソリューションを提案するセレン エンド

:( '@ブラウザ')の前に

偽ignore_hidden_​​elementsは= Capybara.current_driver =を行います。宝石バージョンは 1)キュウリ-v 0.10.7

2)キュウリレール0.3.2

3)カピバラ0.4.1.2

4)database_cleaner 0.5.0

おかげであります

+0

質問は表示されません。私はまた、あなたが間違ってやっていることを人々が理解してもらいたい場合に役立つ、コードを見ません。 –

答えて

1

キュウリ、カピバラ、セレンと同様の問題がありました。 Deviseは何らかの形で作成されたユーザーのログインを許可しませんでした。テスト中、Cucumberはブラウザを使用して作成したユーザーを使用してアプリにログインできませんでした。テストをパスしたrack_testにCapybaraドライバを設定したときに、セレンに設定すると、「無効な電子メールまたはパスワード」で失敗しました。 Deviseのログインページで

最後に、答えはherehereです。トランザクションフィクスチャを使用する場合、Seleniumはデータベースに書き込まれた情報にアクセスできません。したがって、トランザクションフィクスチャをオフにして、DatabaseCleanerストラテジを切り捨てに設定する必要があります。 (私の場合の機能/サポート/ env.rb及び仕様/ spec_helper.rbで)設定ファイルで定義し、次のキュウリの設定機能/サポート/ env.rb

DatabaseCleaner.strategy = :truncation 

とRSpecの構成spec/spec_helper.rb中で

RSpec.configure do |config| 
    config.use_transactional_fixtures = false 
    config.before :each do 
    DatabaseCleaner.start 
    end 
    config.after :each do 
    DatabaseCleaner.clean 
    end 
end 
関連する問題