1

私はRoRの一部に傾倒してきましたが、TDDに到達したとき、物事はより複雑になり始めました。アプリのある時点で、実際のデータに対してテストを実行する方がよいと思いました。

実際のデータとサンプルデータ

Webを検索したところ、テストは実際のデータではなく、サンプルデータに対して実行することを目的としていることがわかりました。しかし、それでも私はそれに同意できませんでした。

私のアプリにエイリアスシステムがあったとしましょう。したがって、ランダムなURLにアクセスすると、そのフラグメントが何を望んでいるかがわかり、適切な正規URLにリダイレクトされます。そして、エイリアス辞書がいくつかのモデルに保存されていることを追加しましょう。その辞書をどのようにテストしますか?すべてのエイリアス/キーワードのハードコード仕様ファイル?

実際のデータにこだわる

私が気付いた最初の2つのことは、まだ非常に不確かですが、次のとおりです。

  1. Rspecテスト環境は、開発モデルのデータにアクセスしません。
  2. FactoryGirlは私のテストデータベースを支配しているので、それを設定するのは私のオプションではありません。

私が完全な初心者であると理解できる最善の解決策は、spec/supportフォルダー内にいくつかのクラスを作成し、それらを工場内で呼び出して、実際のデータを取得できるようにすることです。これらのクラスには、実際のデータベース情報の短いサンプルがネストされているため、テストを「実際に」実行できます。

周りのプロはそれを改善するために何を提案できますか?

4

2 に答える 2

0

データベースにデータを入力するために、seeds.rb ファイルの作成を検討することをお勧めします。これは通常、開発データベースを初期化してアプリで使用できるようにする (および Rails コンソールで照会できるようにする) ために使用されますが、この回答で説明されているように、テスト データベースをシードするために使用できます。

于 2014-02-28T00:17:23.997 に答える