問題タブ [fixtures]
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で推奨されるフィクスチャ交換プラグイン?
テストでフィクスチャを置き換えることを目的とする Rails プラグインは多数あります。ここに私が考えることができるいくつかがあります:
- 器具の交換
- 工場の女の子
- 工場と労働者
- レールシナリオ
- 備品シナリオ
- オブジェクトパパ
おそらく他にもあります。これらのプラグインのうち、どのプラグインが好きですか? その理由は?
ruby-on-rails - SQL ダンプを使用してテスト データベースを作成するときに読み込まれるフィクスチャです。
非標準のテーブル作成オプションがいくつかあるため、標準の schema.rb の代わりに sql ダンプを使用せざるを得ません (つまり、 environment.rb でこの行のコメントを外しましたconfig.active_record.schema_format = :sql
)。SQL ダンプを使用すると、フィクスチャがデータベースにロードされていないように見えることに気付きました。一部のデータがロードされていますが、どこから来ているのかわかりません。これは正常ですか?もしそれが正常なら、この他のデータがどこから来ているのか誰か教えてもらえますか?
selenium - Selenium Fitnesse Bridge:変数を保存してエコーするにはどうすればよいですか?
Fitnesse for Seleniumでテストを作成するために、 Selenium FitnesseBridgeFixtureを使用しています。Seleniumが持つすべての機能をカバーしているので素晴らしいです。ただし、私が直面している問題は、SeleniumIDEの場合と同じように変数を格納することです。
これと同じくらい単純なものでも問題なく動作するはずですが、テストを保存すると、エラー、未定義の変数が表示されます。
これは意味がありません。エコーする前に、変数を行で定義しています。テストを実行すると、次のようになります。
著者は彼のテストで同じようなことをしています。なぜこれがうまくいかないのですか?
selenium - Selenium: javascript を使用してフォーム フィールドから値をクリアするにはどうすればよいですか?
Selenium IDE と Selenium-Fitnesse Bridge フィクスチャを使用しています。フォーム フィールドからデフォルト値をクリアすると、フォームにエラー メッセージが表示されることをテストしようとしています。
したがって、Selenium IDE で記録すると、Selenium に何も入力しないように指示するのと同じことになります。
これに関する問題は、私が使用している Fitnesse フィクスチャが、2 番目の引数が null でないことを想定していることです。
Seleniumに「何も入力しない」のではなく「値をクリアする」方法はありますか?
ruby-on-rails - Railsフィクスチャでは、Quentinは誰ですか?
認証されたとおりに動作し、現在はRESTful認証である場合、最初のユーザーフィクスチャは「Quentin」です。
誰かがその名前の由来を知っているかどうかだけ興味がありますか?クエンティン・タランティーノ?誰かの犬や子供?
ruby-on-rails - Railsフィクスチャ-外部キーをどのように設定しますか?
このガイドでRailsフィクスチャについて読んでいます(ありがとう、trevorturk)。Yamlファイルでクラスを定義しているようで、それらは自動的にtest
DBにロードされます--cool。
しかし、このレシピがそのクックブック(またはその他)に属することを指定したい場合、どのようにそれを行いますか?
Yamlコードで手動で値を指定することになっていますcookbook.id
か?recipe.cookbook_id
(推測ですが、ガイドにはそのようなものは表示されていません。)または、より適切な方法はありますか?
ruby-on-rails - Ruby on Rails のフィクスチャにマイグレーションを適用できますか?
Ruby on Rails でフィクスチャを使用するのは少し面倒だと思います。これは、ほとんどの移行後に手動で修正する必要があるためです。
移行を実行するときにフィクスチャを変更できる方法 (プラグイン) はありますか?
ruby-on-rails - Rails初期化子のフィクスチャデータへの依存
アプリ全体で使用されるデフォルトを設定する初期化子があります。値は ActiveRecord モデルです。基本的に、アプリの存続期間中キャッシュしています。
レコードはデータベースにあることが保証されています。これは、他のモデルによって参照されるフィクスチャ データです。これは、すべてのテスト実行の前にデータベースがパージされるテスト環境を除いて、正常に機能します。(私はエッジ レールで実行していますが、これが最近の動作だと思います。以前はデータを手動で挿入して、テスト実行間で保持することができました。)regions.yml
フィクスチャ ファイルにも記録がありますが、フィクスチャは次の時点までロードされません。 Railsイニシャライザが完了した後。
このようなフィクスチャ データへの依存に対処する正しい方法は何ですか? または、これを構造化するためのより良い方法はありますか? リクエストごとにこれをリロードする意味がないため、 before_filter を使用したくありません。別の展開以外では変更されません。
ruby - テストデータをランダムに生成するのは悪い習慣ですか?
rspec を使い始めて以来、フィクスチャの概念に問題がありました。私の主な懸念事項は次のとおりです。
テストを使用して、驚くべき動作を明らかにします。私は、テストしている例について考えられるすべてのエッジ ケースを列挙できるほど賢いわけではありません。ハードコードされたフィクスチャの使用は、私が想像した非常に特殊なケースでコードをテストするだけなので、制限があるようです。(確かに、どのケースをテストするかに関しては、私の想像力にも限界があります。)
コードのドキュメントの形式としてテストを使用します。ハードコーディングされたフィクスチャ値がある場合、特定のテストが何を実証しようとしているのかを明らかにするのは困難です。例えば:
最初の方法を使用すると、最も高価なアイテムが何であるかが読者に示されず、その価格が 100 であることがわかります。3 つの方法はいずれも、そのフィクスチャ
:expensive
が にリストされている最も高価なものであると信じるよう読者に求めますfixtures/items.yml
。Item
不注意なプログラマーは、 inを作成before(:all)
したり、別のフィクスチャを に挿入したりして、テストを中断する可能性がありfixtures/items.yml
ます。それが大きなファイルである場合、問題の原因を突き止めるのに長い時間がかかる可能性があります。
私が始めたことの 1 つは、#generate_random
すべてのモデルにメソッドを追加することです。このメソッドは、スペックを実行しているときにのみ使用できます。例えば:
(これを行う方法の具体的な詳細は、実際にはもう少しクリーンです。すべてのモデルの生成とクリーンアップを処理するクラスがありますが、このコードは私の例では十分に明確です。)したがって、上記の例では、次のようにテストできます。続きます。心のフェイントへの警告: 私のコードは次の使用に大きく依存していますbefore(:all)
:
このようにして、私のテストは驚くべき動作をよりよく明らかにします。この方法でデータを生成すると、コードが予期したとおりに動作しないエッジ ケースに出くわすことがありますが、フィクスチャのみを使用していた場合はキャッチできなかったでしょう。たとえば、 の#most_expensive
場合、複数のアイテムが最も高価な価格を共有するという特別なケースを処理するのを忘れると、最初の でテストが失敗することがありましたshould
。AutoSpec で非決定論的な失敗を見ると、何かが間違っているという手がかりが得られます。フィクスチャだけを使用していた場合、そのようなバグを発見するのにさらに時間がかかる可能性があります。
また、私のテストでは、予想される動作がどのようなものかをコードで示すという、わずかに優れた仕事もしています。私のテストでは、sorted が価格の降順で並べ替えられたアイテムの配列であることが明らかになりました。その配列の最初の要素と等しいと予想#most_expensive
しているので、 の予想される動作がさらに明確になりmost_expensive
ます。
それで、これは悪い習慣ですか?固定具に対する私の恐怖は不合理なものですか? モデルごとにメソッドを書くのはgenerate_random
大変ですか? または、これは機能しますか?
ruby-on-rails - 備品とセレンとレール(オーマイ?)
RailsアプリのSeleniumテストでどのデータを使用しますか?フィクスチャからロードしますか?既存の開発データベースを使用しますか?別の(フィクスチャではない)データベースを使用しますか?
ここで自分の選択肢を検討しています。SeleniumGridの修正バージョンで実行される大規模なSeleniumテストスイートを備えたRailsアプリがあります。現在、プロセスの一部は、テストスイートが実行される前に、一度に大量のフィクスチャのセットをロードすることです。それはたくさんのデータです。そのほとんどは、本番データベースからエクスポートされたレポート情報です。最初に設定したとき、データをOracleからyamlにエクスポートしました。
一部のレポートテーブルでスキーマが変更されたため、もちろんフィクスチャデータを再生成する必要があります。たくさんあるので、ファイルを手作業で編集する価値はありません。ただし、スキーマを少し変更するたびに再生成する必要があるのは非効率的です。言うまでもなく、覚えておくべきもう1つのステップです。もっと良い方法はありますか?
編集:私はもともと、通常のRailsテストのように、各テストの前にフィクスチャをロードし、各テストの後にそれらをアンロードすることを意図していました。ただし、このレポートデータにより、フィクスチャのロードには約15分かかります。200以上のテストがあり、スイートは12時間ごとに実行されます。時空キャプテンを曲げることができます!
編集2:私はまた、この大きな備品のセットを持っていることは悪臭であることに同意します。ただし、レポートには多くのデータが集約されており、セレンテストの価値の多くはレポートをテストすることであるため、どのように削減するかはわかりません。
小さなデータセットであっても、スキーマの変更との調整を維持するための別のセットです。(ユニット、機能、および[Rails]統合テスト用に個別の小さなセットがあります。)
これは私の元の質問に戻ります-手でそれを行う以外に、または毎回それらを再生成することを覚えている他のオプションはありますか?