問題タブ [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.
ruby-on-rails - Rails、Rspec、Capybara を使用した Database_cleaner。迷惑な削除。それらを制御する方法は?
簡単にするために、モデル Canvas とモデル Block があります。
各キャンバス ビュー (これは単なる基本的なテーブルです) には、ブロックの内容を更新するためのフォームがいくつかあります。
変更が適切にコミットされているかどうかを RSPEC と Capybara でテストしたい。
だから私はこの行を持っています:
BlocksController に送信するもの
また、キャンバス ビューとすべてのコントローラー/モデルが正常に動作することを保証できます。
しかし、テストは次のエラーで失敗します:
そこで、テスト ログを調べたところ、作業が完了する前に Database_cleaner がいくつかのテーブルを削除しているように見えることがわかりました。
ご覧のとおり、ほとんどの場合、UPDATE 要求は試行されません。(何度も何度もテストを実行することで、一度見ました)。
だから私の質問は、誰かがそれらの削除を遅らせる方法を知っていますか?
本当にありがとうございました !
PS :
データベースクリーナーは、このリンクのように構成されています:
戦略を何度も変更しようとしましたが、何も役に立ちませんでした。
ruby-on-rails-3 - データベース クリーナーが 1 つのキュウリ シナリオをクリーニングしない
そのため、私のチームは、Cucumber、Rspec、およびこれらのテスト フレームワークを使用するために必要なすべての gem を使用して、Rails アプリ (調査および軽量の電子記録システム) を追い出しています。私は Jenkins CI サーバーをセットアップする過程にあり、テスト、開発、およびステージング環境全体でデータベースを標準化したいと考えていました (最終的に MySQL を選択しました)。
テスト環境を SQlite から MySQL に切り替えたところ、キャッシング関連のテスト バグがいくつか発見されましたが、ハードコーディングされた ID ではなく相対 ID を使用することで解決しました。例:
この 1 つの失敗した仕様を解決した後、テスト スイートを永遠に悩ませてきた無関係な ajax の問題に対処しました。やっとテストの技術をマスターしたと思い、自信を持って走りrake
ました。私はこの無愛想な光景に遭遇しました:
もちろんcucumber features/presenting_default_questions.feature
、単独で実行すると緑の雨が降るようになりました。
失敗のシナリオ:
関連するステップ:
を使用する以外Capybara.javascript_driver = :webkit
に、キュウリ/データベース クリーナーの設定は から変更されていませんrails g cucumber:install
。
失敗した rspec テストとキュウリ テストの両方が、同じ種類のインデックス作成の問題に苦しんでいるようです。上記で提案されたソリューションは機能しますが、非常にジャンキーであり、単純な絶対インデックスが機能しない理由について疑問を投げかけます (すべてのデータベースが各シナリオと機能の間でクリーンアップされた後)。私のテストに何か問題がありますか?database_cleaner とは?
もっとコードが役立つかどうか教えてください!
関連する gem バージョン:
- アクティブモデル (3.2.14)
- きゅうり(1.3.6)
- きゅうりレール(1.3.1)
- データベースクリーナー (1.0.1)
- カピバラ (2.1.0)
- カピバラウェブキット (1.0.0)
- mysql2 (0.3.13)
- rspec (2.13.0)
ruby-on-rails - DataMapper での DataBase Cleaner gem の使用
RSpec と FactoryGirl を使用してテストを書いています。私のモデルでは、DataMappers が使用されています。ここで RSpec では、2 つのオブジェクト A、B、および C を使用しているコントローラーの 2 つのメソッド update および index 関数をテストしています。以下のように FactoryGirl を使用してそれらを作成しました。
ここで、DataBase Cleaner Gem を使用して各テストの後にそれらをクリーニングしたいと考えています。Google で検索しましたが、ほとんどの記事では ActiveRecord で DataBase クリーナー Gem を使用する方法について説明していますが、DataMapper で DataBaseCleaner gem を使用する方法を明確に指定しているものはありません。したがって、DataMapper が使用されている DataBase クリーナーを使用した RSpec ファイルの小さな例を誰かが教えてくれたら、本当に感謝します。前もって感謝します。
ruby - トランザクション戦略を使用した ORM とデータベースのクリーニングに関する 2 つの質問
既存の Cucumber および Ruby スイートを使用して概念実証テストを作成しています。私がこれを行っている企業には、とりわけ Java と DB2 を含むスタックがあります。
現在、データベースを使用するテストはテスト データベースを劣化させます。多くの理由から、データベースを消去してイメージ化されたバージョンに置き換えることはできません。
トランザクション戦略を使用してデータベースをクリーンアップするというアイデアに興味があり、database_cleaner gem を検討しています。
database_cleaner を操作するには ORM が必要なようです。この時点ではスキーマにアクセスできず、ActiveRecord は私の資格情報で必要なものにアクセスできません。
2 つの質問:
- ORM は常にスキーマにアクセスする必要がありますか?
- トランザクション戦略を使用してデータベースをクリーンアップするには、常に ORM が必要ですか?
また、Ruby 1.8.7 (jRuby はまだありません)、Windows、DB2 などで動作する gem を誰かが知っている場合のボーナスです。
ruby-on-rails - DatabaseCleaner が原因でこの RSpec コントローラー テストが失敗するのはなぜですか?
作成したテスト オブジェクトを適切にクリーンアップできるように、RSpec を使用して DatabaseCleaner をセットアップしようとしています。DatabaseCleaner を使用しない場合、次のテストに合格します。
ただし、DatabaseCleaner コードをspec_helper.rb
ファイルに追加すると、次に示すようにテストが失敗します。
コントローラーは次のとおりです。
私のspec/spec_helper.rb
ファイルの関連部分は次のとおりです。
奇妙なことに、DatabaseCleaner.clean
ステートメントを削除しても実際にはテストに合格しません。ただし、DatabaseCleaner.start
コードを削除するとテストはパスします。
コントローラーが適切な ID を持つ BulkJob を見つけることができないため、テストは失敗しています。オブジェクトのカウントを出力すると、テスト内では BulkJobs の数は 1 ですが、コントローラー内では 0 です。テストに合格すると、明らかに、両方のスポットで数が 1 になります。
私は Capybara や Selenium を含めていないので、私が理解しているように、rspec はこの例を実行するために rack-test を使用する必要があります。
構成/テストに何か問題がありますか? DatabaseCleaner のクリーニングは早すぎますか?
失敗したテストは次のとおりです。
そして私のGemfile:
rspec - Rails の TX に requires_new: true を含めない理由
この質問に関連:カスタム トランザクションは、rspec の database_cleaner では機能しません
requires_new で TX を開始したくない場所はありますか? (ネストされたTXを行います)
もしそうなら、これがデフォルトだったはずです。
ところで、これが、デフォルトのトランザクション戦略を使用している場合、コードの通常の実行パスが成功したときに、ロールバックを伴う rspec テストが失敗する理由です。
これが私の DatabaseCleaner セットアップです。Rails 4 の実行。
ruby-on-rails - Rails、Rspec、Selenium、および use_transactional_fixtures を使用する一貫性のないデータベース
私は以下を使用して問題に遭遇しました:
- レール (3.2)
- Rspec (2.14.1)
- データベースクリーナー (1.2.0)
これは私のRspec構成がどのように見えるかです:
ブロックにレコードを作成しますbefore(:each)
が、アプリケーション コードには表示されません。
私がそこにあると思っていたオブジェクトがなかったため、これは問題を引き起こします。
何度も試みた後、私はついに私の問題に対する答えを見つけました。