すべて。単体テストで実行するために、テーブルの予測可能なデータを生成する動的フィクスチャCSVファイルがあります。期待どおりに機能し、テーブルにデータを入力していますが、テストの実行後にテーブルを確認すると、「空白」のデータの行がいくつか追加されています(すべてゼロなど)。これらはフィクスチャによって作成されたものではなく、単体テストは読み取り専用であり、選択を行うだけなので、コードのせいにすることはできません。フィクスチャのセットアップ中にログが記録されていないようです。そのため、「空白」のデータがいつ挿入されているかがわかりません。誰かがこれまでにこれに遭遇したことがありますか、または空白のデータのソースを追跡するためにフィクスチャのセットアップが何をしているのかをログに記録する方法やその他の方法で確認する方法について何か考えがありますか?
2 に答える
ActiveRecordロギングをオンにすることができます(ActiveRecord::Base.logger = Logger.new(STDOUT)
test / test_helper.rbファイルに入れてください)。
または、フィクスチャ(ほとんどのRails開発者にとってはドードーの道を進んでいます)を使用する代わりに、Factory(thoughtbotのfactory_girl)やseed_fu(ロードする必要のある特定のデータがある場合)などのより信頼性の高いものを使用できます。
それを防ぐ正確な方法ではありませんが、問題が何であるかを発見しました。ERB をフィクスチャ CSV ファイルに配置していましたが、これは正常に機能していましたが、解析および処理される方法が原因で、結果の CSV 出力に空白行が配置されていました。Fixtures はそれをうまく処理していないようで、その結果、テーブルに空白行が挿入されていました。何らかの理由で <% rubycode -%> が機能しないため、空白行が出力 CSV に配置されるのを防ぐことができませんでした。ダッシュを閉じると ERB 解析エラーが発生しました。理由がわからない。
いずれにせよ、最終的な回避策は、CSV の代わりに YML に切り替えることでした。空白を問題なく許容し、空白行がテーブルに挿入されることはもうありません。
余談ですが、factory___girl は興味深い可能性があるように見えますが、YML は現在問題なく動作しているため、やり過ぎかもしれません。私が思うに、seed_fu を使用しても大きなメリットはありません。この現在のケースでは、レポート コードをテストしているため、データは非常に具体的であり、レポートの出力データを検証するために特定の方法で構造化する必要があります。