問題タブ [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 に答える
571 参照

ruby-on-rails - キュウリとカピバラ Webkit を使用した Rails 4 で typeahead.js テストが失敗する

typeahead.js を使用して入力フォームをテストする次の Cucumber 機能があります。

テストは 2 番目のステップで失敗し、次のエラー メッセージが表示されます。

関連するステップ定義は次のとおりです。

select_from_typeahead 関数は次のとおりです。

ただし、この問題は typeahead 自体とは何の関係もないように見えますが、コードはブラウザーで動作するため、デバッグ出力を追加すると、テストを次のように実行すると、最初のステップでバッテリーがデータベースに保存されることに気付きます。まあ、2 番目のステップが実行される前に不思議なことに消えてしまいます。

トランザクションを使用するように設定されている場合、Javascript でうまく動作しないことがわかっているため、database_cleaner の問題だと思いますが、代わりに切り捨てを使用するように設定し、トランザクション フィクスチャを無効にしましたが、まだ機能しません。

現在、私の features/support/env.rb は次のようになっています。

私の環境は次のとおりです。

何かが欠けているのでしょうか、database_cleaner がまだテストに干渉する可能性がある他の方法がありますか、それとも私がまったく考えていなかった別の方法ですか?

どんなアイデアでも大歓迎です!

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

ruby-on-rails - データベースクリーナーは、データを削除してはならない場合に削除します

誰かがそのような問題に遭遇しましたか?

メーラー配信をトリガーするコントローラーがあります。

そして、私はそのメーラーを手に入れました:

テストが実際に終了する前に、データベースクリーナーがすべてのデータを削除する理由がわかりません。

それが重要な場合は、JS テスト (Webkit を使用) です。

これが私の設定です:

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

ruby - rspecのuse_transactional_fixturesのデフォルト値は何ですか?

これまでに読んだ記事で、rspec と database_cleaner gem に関してconfig.use_transactional_fixtures = false. database_cleaner gem を使用すると、この行を削除できませんか?

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

ruby-on-rails - postgres スキーマのデータベースクリーニング

私は持ってgem devisegem apartmentて、各デバイスのユーザーアカウント用に個別のスキーマを作成するために使用しています。

その号のアパートのドキュメントアドバイスでは、 Rack ミドルウェアを使用してテナントを切り替えることを提案しています。その場合、リクエストに依存するのではなくユーザーに依存するため、(私が知る限り)不可能です。

私のRSpecテストを除いて、すべてうまくいきます。問題は、すべてのテスト データベースが適切にクリーンアップされていないことです (新しく作成されたユーザーのスキーマが削除されません)。少数のテストを実行するとすべてのテストに合格しますが、多くのテストを実行するとFaker::Internet.first_name、既に使用されているユーザー名が生成されます (これは有効ではありません)。

これが私がやった方法です:

アプリ/コントローラー/application_controller.rb

app/controllers/albums_controller.rb (アルバムモデルbelong_to :user)

アプリ/モデル/user.rb

これは私が仕様に追加したものです:

仕様/工場/user.rb

仕様/サポート/auth_helpers.rb

仕様/機能/アルバム_spec.rb

私はそれよりもいくつかのテストをjs: true持っているので:

仕様/サポート/database_cleaner.rb

すべてのソースの現在のコミットは、こちらの github で入手できます。

だから..主な質問は、テスト後に各ユーザーのデータベースで作成されたスキーマをきれいにする方法ですか? 他のコメントもよろしくお願いします。よろしくお願いします。

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

ruby-on-rails - RSpec & Database Cleaner - 特定のオブジェクトをテスト データベースに永続的に保持する

私は (遅ればせながら) RSpec/capybara を使用して Rails アプリ (ショッピング Web サイト) のテストを開始しました。データベース クリーナーを使用してデータベースをクリアし、Factory Girl を使用してすべてのテストで新しいオブジェクトを生成します (ほとんどの人が行うように)。これは問題なく動作し、テスト間でデータをクリアすることをお勧めします。

ただし、同じオブジェクトの複数のインスタンスを生成するのは遅くなる可能性があり、(私が知る限り) 少し面倒です。私のデータベースには常に同じオブジェクト、またはテスト用に常に同一のコピーを生成するオブジェクトがいくつかあります。たとえばPackage、サブスクリプション パッケージの価格設定と機能制限を定義するモデルです。それはおそらく決して変わらないでしょう。

この構成で (詳細情報が必要な場合はコメントして指定してください)、オブジェクトの特定のインスタンスをテスト データベースに配置してデータベース クリーナーから除外する方法、または特定のオブジェクトの永続的なコピーをテストデータベース?

これは主にテスト速度を上げるためです。