問題タブ [database-cleaner]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
selenium - RSpec/Capybar/JS テストは単独ではパスするが、一緒に実行すると失敗する
私の問題は非常に似ているようです:rspecテストは単独では合格しますが、他のテストで実行すると失敗します-しかし、受け入れられた答えは私がすでに行っていることです:私はavdiのデータベースクリーナーセットアップを使用しています(そして私は削除を試みましたサスペンダーのサンプルアプリで thinkbot が使用するような切り捨ての代わりに): http://devblog.avdi.org/2012/08/31/configuring-database_cleaner-with-rails-rspec-capybara-and-selenium/
したがって、このコードのアカウント レコードは次のとおりです。
削除されているようです。アカウントが存在しないため、ページが見つかりません。では、さまざまなデータベース クリーナー戦略を行ったり来たりして問題を引き起こしているようですか?
文字通り rspec --only-failures を実行でき、失敗したばかりのすべてのテストに合格します。機能/カピバラの仕様でのみ発生します。
編集: これが私の構成です: https://gist.github.com/gregblass/b886f79b0d8e2e2015af
更新: 失敗したテストの例をいくつか示します: https://gist.github.com/gregblass/1b878d92a2b9dad355e0
更新 2: js: true テストを実行した後に発生します。それらの何かが、それに続く他のjs以外のカピバラテストを台無しにしています。
ruby-on-rails - DatabaseCleaner は、Rails テスト ユニットで自動インクリメント インデックスをリセットしません。
test/test_helper.rb :
私のテストユニットファイル: (test1 と 2 は重複しています)
結果 :
なぜ機能しないのですか?私の間違いはどこですか?
ruby-on-rails - ActionMailer が DatabaseCleaner の後に実行されるため、Rails RSpec/Cucumber テストが失敗する
私の Rails アプリには、ActionMailer を介して電子メールを送信する after_action フックを持つコントローラーがいくつかあります。そのようです:
私の問題は、スペックの実行後にメーラーが実行を終了する必要がある場合があるため、テストスイートがランダムに失敗することですが、データベースは各テストの後にクリーンアップされるため、メーラーが必要とするオブジェクトはもう存在しません。しかし、それが問題だと確信しています。このように失敗したテストが 1 つありますがsleep 1
、最後のexpect(page).to have_something
ステートメントの前に追加したところ、合格しました。ログでも確認できました。アプリの準備が整う前に、データベースがザッピングされていました。
ちなみに、メーラー用の ActiveJob セットアップはありません。ガイドが同じように機能し、後で ActiveJob を追加すると、すでに準備が整っているとのことでしたので、deliver_later を使用しました。
では、どうすればこれを回避できますか? 仕様が終了して DatabaseCleaner が実行される前に、アプリがすべて完了していることを確認するにはどうすればよいですか?
ruby-on-rails - rspec テストの例に引数を渡す
大きなテストデータベースを使用しているいくつかのテストがあります。また、Database Cleaner を使用して、各テスト後にデータベースをクリーンアップしています。そして、ここで問題が発生します。私のスペックヘルパーにはこれがあります
しかし、ここで問題です。上記のテストのグループ (大きなグループ) は、この大きなデータベースを何度も (テストごとに 1 回) 生成してドロップします。これには長い時間がかかり、これらのテストではデータベースがまったく変更されないため、毎回データベースをクリーンアップして作成する必要はありません。
それで、このようなことをする方法はありますか:
したがって、仕様ヘルパーでは、次のようなことができます。
それとも、その問題に対する他の解決策がありますか?何か案は?
ruby-on-rails - AR-Octopus を使用した Database_Cleaner がレコードをクリーニングしない
シャードデータベースを使用してAR-Octopus gemを使用しているプロジェクトがあります。私たちが直面している問題は、この設定を使用すると、gem 'database_cleaner' がレコードをクリーニングしないことです。これは、テスト スイートに問題を引き起こすテスト データベースに常にレコードが残っているためです。
この GitHub 要点を見つけました - https://gist.github.com/nowlinuxing/22ea0ab673a5622eb48d
これが私のdatabase_cleaner構成ファイルです
誰もこの問題に遭遇したことがありますか? もしそうなら、あなたは問題を解決するために何をしましたか? 役立つ洞察を探しているだけです。
ruby-on-rails - 同じ機能ですべてのシナリオに対して Cucumber バックグラウンド ステップを 1 回実行する方法は?
Cucumber では、機能全体に対してバックグラウンド ステップを実行できますか? それで、すべてのシナリオで繰り返されるわけではありませんか?
検索エンジンでいくつかのテストを実行していますが、検索エンジンにテスト データを事前にシードする必要があります。このデータの生成と処理にはかなりの時間がかかる可能性があるため (私は Elasticsearch を使用しており、インデックスを作成する必要があります)、このバックグラウンドを 1 回だけ実行したいと思いますが、同じ機能でのすべてのテストに対してのみ実行します。
キュウリで可能ですか?
私はMongoDBを使用しているため、トランザクションではなく切り捨てを使用していることに注意してください。各テストの後にDatabaseCleanerが自動的に実行されていると思います。
編集 :
はい、Rails の Ruby ステップで Cucumber を使用しています
EDIT2:具体例
検索エンジンが常に関連する結果を返すことをテストする必要があります (たとえば、「買い手」を検索する場合、「買い手」、「購入」、「購入」などの結果を返す必要があります (ES 構成と関係があります)、および他のコンテキスト情報は正しく更新されます (サイドバーなど)。
括弧内にヒット数を含むカテゴリ/フィルターがあります。ユーザーがフィルターで遊んでいるときに、これらの数が更新されるようにする必要があります)
このために、検索エンジンに多数の結果を事前にシードし、同じ入力に基づくすべてのテストを実行します。少し違うことをするだけの「例」節がよくありますが、同じシードに基づいています
ruby-on-rails - rspec テストの特定のグループの途中で database_cleaner を実行しないようにするにはどうすればよいですか
ユーザーのアクションを模倣し、相互に依存する一連の順序付きテストがあります。
database_cleaner
これらの順序付けられたテストの途中でデータベースをクリーンアップしないように構成するにはどうすればよいですか?
テストのサンプル:
ruby-on-rails - DatabaseCleaner はスーツ間でクリーニングしないようです
救世主。
各 RSpec の例の後でデータベースをクリーニングするのに問題があります。問題は、コマンドを実行するとrspec
、users_controller_spec.rb が、例が期待するよりも多くのレコードがあると不平を言うことです。で確認すると確かにレコードが作成されているようですrails c
。このスイートを単独で実行すると成功するので、DatabaseCleaner が他の仕様が作成するユーザー レコードを消去しないためだと思います (ユーザー レコードの数は、users_controller_spec の例で主張されている余分なレコードと一致します)。それらはbefore :all
ブロックで作成されます(それが重要な場合)。
これが私のrails_helper.rb
users_controller.rb
UPDATE1: ここで追加のuser
レコードが作成されます
ruby-on-rails - database_cleaner の誤動作により Rails カピバラのテストが失敗する
これがdatabase_cleaner
発生した場合を除いて、すべてのテストでインストールして機能しています...
Rails は Failure/Error: expect(ActionMailer::Base.deliveries.count).to eq(1) expected: 1 got: 137 を返します (== を使用して比較)
この 1 つのインスタンスでデータベース クリーナーが失敗する理由や修正方法がわかりません。どんな助けでも大歓迎です。
Gemfile.rb
仕様/サポート/database_cleaner.rb
rails_helper.rb
spec_helper.rb
ruby-on-rails - Rspec テストで database_cleaner が機能しない
こんにちは、database_cleaner をセットアップしようとしていますが、それができず、何が足りないのかわかりません。
私が今まで持っているもの:
users_controller_spec
support/database_cleaner.rb
rails_helper.rbには行があります
およびコメント解除された行
端末ログ
ご協力ありがとう御座います!