我如何以更加惯用的方式与RSpec和Capybara一起做这件事?

时间:2013-06-24 09:04:04

标签: ruby-on-rails rspec capybara factory-bot

不起作用:

feature "home: don't list inactive flash sales" do
  let(:inactive_flash_sale) { create(:inactive_flash_sale, active: false) }

  scenario "does not list inactive flash sales" do
    visit spree.root_path
    expect(page).to_not have_content(inactive_flash_sale.name)
  end
end

使用:

feature "home: don't list inactive flash sales" do    
  scenario "does not list inactive flash sales" do
    inactive_flash_sale = create(:inactive_flash_sale, active: false)
    visit spree.root_path
    expect(page).to_not have_content(inactive_flash_sale.name)
  end
end

以上内容不会以第一种形式传递,但会在第二种形式传递。这是因为Factorygirl部件直到第一个版本访问后才初始化,但它在第二个版本之前初始化。这不允许我使用let虽然这是最近使用RSpec的惯用方法。我做错了什么,或者这是怎么回事?

1 个答案:

答案 0 :(得分:3)

您只需将let替换为let!,这将直接创建对象。