3

データベースにレコードを挿入する Rails の移行があります。カテゴリ モデルは、このレコードに依存します。RSpec は各例の前にデータベースをクリアするため、このレコードは失われ、さらに RSpec は移行からデータベースを生成しないように見えるため、作成されることはないようです。データベースでこのレコードを作成/再作成する最良の方法は何ですか? before(:all) を使用しますか?

4

2 に答える 2

6

RSpec がデータベースをクリアするのではなく、Rails の rake:db:prepare タスクが dev データベースのスキーマ(内容ではない) を *_test db にコピーするということです。

before(:all)はい、トランザクションは個々の例にラップされているため、使用できますが、単純なフィクスチャ ファイルでも同じことができます。

(この問題には、より複雑な一般的な解決策があります。「開発」サービスと「テスト」サービスが完全に別のインスタンスになるサービス指向アーキテクチャに移行することです。その後、テスト データベース構成を開発データベースに向けることができます。 rake:db:prepare を無効にし、再生成する際に移行からテスト サービスを構築します。その後、移行とデータ変換をテストできます。)

于 2008-11-07T05:21:02.617 に答える
2

私がやりたいのは、data という名前の db/migration にフォルダーを作成し、そこに yml フィクスチャを配置することです。

次に、次のように移行を作成します

デフセルフアップ
 下
 directory = File.join( File.dirname(__FILE__), "データ" )
 Fixtures.create_fixtures( ディレクトリ、「カテゴリ」)
終わり

def self.down
  Category.delete_all
終わり
于 2008-11-07T05:30:17.230 に答える