問題タブ [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.

0 投票する
1 に答える
1800 参照

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以外のカピバラテストを台無しにしています。

0 投票する
1 に答える
1337 参照

ruby-on-rails - DatabaseCleaner は、Rails テスト ユニットで自動インクリメント インデックスをリセットしません。

test/test_helper.rb :

私のテストユニットファイル: (test1 と 2 は重複しています)

結果 :

なぜ機能しないのですか?私の間違いはどこですか?

0 投票する
0 に答える
150 参照

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 が実行される前に、アプリがすべて完了していることを確認するにはどうすればよいですか?

0 投票する
1 に答える
532 参照

ruby-on-rails - rspec テストの例に引数を渡す

大きなテストデータベースを使用しているいくつかのテストがあります。また、Database Cleaner を使用して、各テスト後にデータベースをクリーンアップしています。そして、ここで問題が発生します。私のスペックヘルパーにはこれがあります

しかし、ここで問題です。上記のテストのグループ (大きなグループ) は、この大きなデータベースを何度も (テストごとに 1 回) 生成してドロップします。これには長い時間がかかり、これらのテストではデータベースがまったく変更されないため、毎回データベースをクリーンアップして作成する必要はありません。

それで、このようなことをする方法はありますか:

したがって、仕様ヘルパーでは、次のようなことができます。

それとも、その問題に対する他の解決策がありますか?何か案は?

0 投票する
0 に答える
250 参照

ruby-on-rails - AR-Octopus を使用した Database_Cleaner がレコードをクリーニングしない

シャードデータベースを使用してAR-Octopus gemを使用しているプロジェクトがあります。私たちが直面している問題は、この設定を使用すると、gem 'database_cleaner' がレコードをクリーニングしないことです。これは、テスト スイートに問題を引き起こすテスト データベースに常にレコードが残っているためです。

この GitHub 要点を見つけました - https://gist.github.com/nowlinuxing/22ea0ab673a5622eb48d

これが私のdatabase_cleaner構成ファイルです

誰もこの問題に遭遇したことがありますか? もしそうなら、あなたは問題を解決するために何をしましたか? 役立つ洞察を探しているだけです。

0 投票する
2 に答える
1226 参照

ruby-on-rails - 同じ機能ですべてのシナリオに対して Cucumber バックグラウンド ステップを 1 回実行する方法は?

Cucumber では、機能全体に対してバックグラウンド ステップを実行できますか? それで、すべてのシナリオで繰り返されるわけではありませんか?

検索エンジンでいくつかのテストを実行していますが、検索エンジンにテスト データを事前にシードする必要があります。このデータの生成と処理にはかなりの時間がかかる可能性があるため (私は Elasticsearch を使用しており、インデックスを作成する必要があります)、このバックグラウンドを 1 回だけ実行したいと思いますが、同じ機能でのすべてのテストに対してのみ実行します。

キュウリで可能ですか?

私はMongoDBを使用しているため、トランザクションではなく切り捨てを使用していることに注意してください。各テストの後にDatabaseCleanerが自動的に実行されていると思います。

編集 :

はい、Rails の Ruby ステップで Cucumber を使用しています

EDIT2:具体例

  • 検索エンジンが常に関連する結果を返すことをテストする必要があります (たとえば、「買い手」を検索する場合、「買い手」、「購入」、「購入」などの結果を返す必要があります (ES 構成と関係があります)、および他のコンテキスト情報は正しく更新されます (サイドバーなど)。

  • 括弧内にヒット数を含むカテゴリ/フィルターがあります。ユーザーがフィルターで遊んでいるときに、これらの数が更新されるようにする必要があります)

このために、検索エンジンに多数の結果を事前にシードし、同じ入力に基づくすべてのテストを実行します。少し違うことをするだけの「例」節がよくありますが、同じシードに基づいています

0 投票する
1 に答える
29 参照

ruby-on-rails - rspec テストの特定のグループの途中で database_cleaner を実行しないようにするにはどうすればよいですか

ユーザーのアクションを模倣し、相互に依存する一連の順序付きテストがあります。

database_cleanerこれらの順序付けられたテストの途中でデータベースをクリーンアップしないように構成するにはどうすればよいですか?

テストのサンプル:

0 投票する
1 に答える
449 参照

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レコードが作成されます

0 投票する
1 に答える
128 参照

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

0 投票する
1 に答える
1173 参照

ruby-on-rails - Rspec テストで database_cleaner が機能しない

こんにちは、database_cleaner をセットアップしようとしていますが、それができず、何が足りないのかわかりません。

私が今まで持っているもの:

users_controller_spec

support/database_cleaner.rb

rails_helper.rbには行があります

およびコメント解除された行

端末ログ

ご協力ありがとう御座います!