0

次のテストに問題があります。オブジェクトを作成すると、「保留中」のステータスが割り当てられます。ステータスは、実際にはアクティブなレコードの関連付けです。だからこんな感じ

def object
  belongs_to :object_status
end

def object_status
  has_many :objects

  def self.pending
    find_by_name('pending')
  end
end

次に、コントローラーの作成でこれを行います

@object = Object.new(params[:object])
@object.object_status = ObjectStatus.pending
@object.save

RSpec では、オブジェクトのステータスが保留中であることを確認するためにテストしたいので、objects_controller_spec でこれを行っています。

post :create, :object => @attr # I'm using pre-defined attributes
p = Object.last
p.object_status_id.should eq(Factory(:object_status_pending).id)

RSpec テストは次のエラーで失敗します (16 は Factory オブジェクトの ID です): expected 16 got nil 何らかの理由で、object_status_id の値を取得していません。開発サーバーでコードを実行すると、データベース内のオブジェクトの object_status_id が適切に設定されているため、コードがテストに合格したことがわかります。私は理解できないこれの複数のインスタンスを持っています。

ありがとう

4

1 に答える 1

0

これは、Factory_Girl に関する理解不足が原因でした。実際にはテスト データベースではなく、フィクスチャでのみオブジェクトを作成していました。

于 2012-05-05T21:44:14.517 に答える