带有FactoryGirl对象的Rspec数组总是返回nil

时间:2013-10-12 12:23:08

标签: ruby-on-rails arrays rspec

当我单独测试wish个对象时,它可以工作:

before do
  @wish1 = FactoryGirl.create(:wish)
  @wish2 = FactoryGirl.create(:wish)
  @wish3 = FactoryGirl.create(:wish)
  visit wishes_path
end

it { should have_link(@wish1.destination)}
it { should have_link(@wish2.destination)}
it { should have_link(@wish3.destination)}

但是当我使用数组进行尝试并使用each进行循环时,它将返回nil。

[@wish1, @wish2, @wish3].each do |w|
   it { should have_link(w.destination)}
end

结果

NoMethodError: undefined method `destination' for nil:NilClass

有没有办法改善这项测试?我的页面应该有很多愿望的链接,而且大多数都是不同的,所以会有很多重复。但我不能简化它。

1 个答案:

答案 0 :(得分:1)

let!(:wishes) { FactoryGirl.create_list(:wish, 3) }

it 'pages includes all whishes links' do
  visit wishes_path
  wishes.each do |wish|
    page.should have_link(wish.destination)
  end
end