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

ruby-on-rails - DatabaseCleaner.clean_with(:truncate) が自動増分 ID をリセットしない

現在DatabaseCleaner、Rails プロジェクトで PostgreSQL を実行して使用しており、以下のように設定しています。

Rails テスト スイートの 1 つで、インスタンスの ID を出力しました。clean_with(:truncate) はデータベースをクリアしてバキュームを実行すると想定しているため、比較的小さい数値である必要があると思います。しかし、テストを実行するたびに増加します。

テストはパスし、使用するシーケンスは関係ありません。しかし、なぜ本来clean_with(:truncation)の方法で機能しないのでしょうか?

======編集======

これは RSpec テストの範囲内です。シーケンス番号付けがパフォーマンスに影響を与えないことは理解していますが、各 :suite で高価なクリーニング (:truncation) を使用し、安価で迅速なクリーニング (:transaction) を使用すると影響があります。clean_with(:truncation)テストスイートを実行する前に、きれいなデータベース状態を取得するために id をリセットしない理由を理解したいと思います。

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

postgresql - Database Cleaner で挿入 ID を 1 にリセットするにはどうすればよいですか?

Database Cleaner の切り捨てからトランザクション戦略に切り替えました。はるかに高速です (正確には 2.5 倍)。

ここでの問題は、最初の挿入 ID が 1 であることを期待するいくつかのテストがあることです。これらのテストは、ページング応答用です。データベースには ID 1 から始まる 11 レコードが必要です。

トランザクションを使用するだけでなく、挿入 ID を 1 に設定するように Database Cleaner を構成することはできますか?

Postgres の使用。

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

ruby-on-rails - パブリックとは異なるスキーマ内のすべてのデータを切り捨てる方法 (database_cleaner)

私のプロジェクトでは、データベースのマルチテナンシー 'apartment' gem を使用しています。

テストするデータベースをクリーンアップするには、「database_cleaner」gem を使用します

Capybara の切り捨て戦略を使用した RSpec テストでは、ユーザーと会社のみの公開スキーマのみを各テスト後にクリーンアップします。

他のスキームはクリアされません。

別のスキームでデータをクリアする方法

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

ruby-on-rails - database_cleaner を使用したテスト後に Rspec テスト データを削除する

Rspec を使用して Rails アプリケーションをテストしています。このアプリケーションは、プリロードされたデータとカスタマイズされたデータを使用します。データベースの状態を変更せずに、同じ開発環境でこのアプリケーションをテストしたいと考えています。テスト後に database_cleaner gem を使用してデータを削除します。ただし、テーブル内のすべてのデータが削除されます。データベース内のデータを変更せずにコードをテストするにはどうすればよいですか。

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

ruby-on-rails - RSpec、Postgres、および DatabaseClearer: トランザクション戦略で ID をリセットすることは可能ですか?

特定の ID にコーディングするべきではないことはわかっていますが、コーディングを行うと作業がずっと楽になることがあります。RSpec と Postgres で DatabaseCleaner を使用していますが、トランザクション戦略を使用しているときに仕様間で ID をリセットできるかどうか疑問に思っていますか?

これが私の現在spec_helperです: