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

ruby-on-rails - mongoid、devise、database_cleaner の rspec: ActiveRecord::ConnectionNotEstablished エラー

mongoid、devise、database_cleaner で rspec を使用しようとしていますが、このエラーが発生しました

私のgemfileテストグループ

そして私の rails_helper.rb ==

私は何をすべきか??

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

ruby-on-rails - インスタンスはデータベースに作成されましたが、ページには表示されませんでした。Rspec でクリーニングをテストする

スペック間でデータベースをクリーンアップしようとしています。そこで、人気の gem database_cleaner を使用することにしました。ここでの問題は、FactoryGirl でモデルの新しいインスタンスを作成すると、作成されてもページに表示されないことです。

これが私のspec_helperです:

そして、私が実行しようとしている簡単なテストは次のとおりです。

binding.pry を使ってデザインの数を確認し、ページを表示します。その結果、デザインは正しく作成されていますが、ページに表示されていません。

前もって感謝します!

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

ruby-on-rails - Rails ActiveRecordトランザクションの整合性/データがシナリオ仕様の途中でコミットされていませんか?

ActiveRecord が整合性/機能を維持する方法を誤解していることは承知しています。以下が機能しない理由を説明してくれることを願っていますか?

異常な状況があります: Rails アプリは、共有データベースにアクセスする (そして新しいテーブル行を作成しますが、既存のものを更新しない) コンパイル済みバイナリを呼び出します。そのため、rails_helper で config.use_transactional_fixtures = false を実行します (そうしないと、セーブポイント エラーが発生します)。このレガシ アプリがテスト中にデータベース内のデータにアクセスできるように、シナリオ内でデータをコミットする必要があります。

テスト中に、eval(rubyexpression) を介してデータを設定しています (完全なコードについては以下を参照してください)。

ノート:

  • これには factorygirl を使用する必要があることはわかっていますが、それは別の長い話です
  • コールバック、フックなどの追加のプロバイダー モデル コードはありません。

デバッガーを使用してテストを一時停止すると (22 行目)、データはデータベースに保存されませんが、rspec が完了するとデータベースに保存されます。

理由がわからない!? 確かに各トランザクションの後にデータがコミットされます。たとえば、eval?

ガイダンス/学習に感謝しますか?

私たちは試しました

  • プロバイダー変数で new + "save" を使用しますが、eval によって入力されません。
  • config.use_transactional_fixtures = true しかし、これは DB にアクセスする外部プロセスなど、他の必要性を壊します
  • フラッシュする方法を探しています(ただし、「トランザクション」にのみ適用されるようです)
  • 「save_points」をコミットする方法を探してみました(運が悪い)
  • provider.create!
  • () ベースRails 3: ActiveRecord オブザーバー: after_commit コールバックはテスト中に起動しませんが、after_save はrun_callbacks(:commit) を起動します

spec_test_eval.rb

test.log 出力

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

ruby-on-rails - Rails/RSpec/Capybara - トランザクションレス データベース クリーニングは Selenium で動作しますが、Webkit では動作しません

そのため、RSpec Capybara テストにトランケーション クリーニング戦略を使用するように RSpec 環境をセットアップしましたが、Javascript ドライバーとして Webkit を使用すると、何かがまだテストをトランザクションにラップしていることに気付きます。

私は Selenium でこの問題を抱えていません。

Webkit に関連する RSpec 構成は次のとおりです。

そして、私の機能テストは次のようになります。

このテストを Webkit で実行すると失敗しますが、Selenium では成功します。

私はいくつかのデバッグを試しました。#update アクションに debugger ステートメントを入れると、データベースが正しく更新されることがわかります。その時点でテスト データベースに接続すると、データベースに新しい情報が表示されます。つまり、この更新をトランザクションでラップすることはできません。ただし、.spec @user のデバッガーでは、factory_girl で FFaker によって生成された元の名前がまだ表示されます。これにより、テストはトランザクション内で実行されると思われます。

JavaScript ドライバーを Selenium に変更すると、すべて正常に動作します。

何か案は?

0 投票する
3 に答える
1393 参照

ruby-on-rails - cucumber/rails の database_cleaner を無効にする方法は?

Rails プロジェクト用に cucumber/rails をセットアップし、テスト データベースにデータを入力して、それに対してテストを実行しました。「rake cucumber」を実行すると、データベースが切り捨てられます。DatabaseCleaner.strategy を :transaction と nil に設定しようとしましたが、それでも切り捨てられます。今のところ、database_cleaner をまったく使用したくないのですが、キュウリにはその存在が必要です。これが私の「./features/support/env.rb」ファイルです:

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

database-cleaner - Database_cleaner の問題。動作していません

私のtest_helper:

私の宝石ファイル:

私は何を間違っていますか?テストを実行していますが、単体テストと統合テストが本来のように独立して実行されていません。私は何をすべきか?私は何が欠けていますか?

解決策を調べてみましたが、うまくいっているようです。私は何が欠けていますか?

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

ruby-on-rails - DatabaseCleaner はテストと開発をきれいにしますか?

testこの構成が自分のデータベースと自分のデータベースの両方をクリーンアップしているように見えるのはなぜdevelopmentですか? development実行するたびに再シードする必要があるのはかなり面倒rspecです。

データベース.yml