1

Rails 3.2.8 を実行しており、テストには MinitTest 仕様を使用しています。テストスイートを自動テストで管理していますが、1 つのことを除いてすべてがうまく機能します。MySQL を使用した ActiveRecord によって管理される Contacts テーブルと、データベース テーブルを持たない CsvImport カスタム Ruby クラスがあります。IRB でアプリケーションを実行すると、すべてが期待どおりに動作しますが、テスト スイートでテストを実行すると、Ruby クラスにあるすべての Contact.find / Contact.where / Contact.map クエリ タイプの呼び出しが nil を返します。

次に例を示します。

require 'test_helper'

class CsvRowManagerTest < MiniTest::Spec
  describe 'import tests' do
    let(:row) { Hash['name' => 'test'] }
    let(:rm) { CsvRowManager.new(row) }
    it "should return an array of stuff" do
      rm.contacts.wont_be_nil
    end
  end
end

class CsvRowManager
  attr_accessor :row, :contacts

  def initialize(row)
    @row = row
    @contacts = Contact.all.map(&:name) #<-- returns nil
  end

end

何よりもデモンストレーションです。何か案は?

4

1 に答える 1

0

テスト データベースは、開発からのデータを複製していないことが判明しました! ドー。お二人のご協力に感謝します。あなたは私を正しい方向に押しました。@Blowmage は、私の問題をリモートでデバッグすることさえ提案してくれました。なんて素晴らしいお尻だ!

于 2012-10-23T03:29:43.023 に答える