次のテストに問題があります。オブジェクトを作成すると、「保留中」のステータスが割り当てられます。ステータスは、実際にはアクティブなレコードの関連付けです。だからこんな感じ
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 が適切に設定されているため、コードがテストに合格したことがわかります。私は理解できないこれの複数のインスタンスを持っています。
ありがとう