Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何使用RSpec和水豚以更惯用的方式实现这一点?_Ruby On Rails_Rspec_Capybara_Factory Bot - Fatal编程技术网

Ruby on rails 如何使用RSpec和水豚以更惯用的方式实现这一点?

Ruby on rails 如何使用RSpec和水豚以更惯用的方式实现这一点?,ruby-on-rails,rspec,capybara,factory-bot,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(in

不起作用:

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的惯用方法。我做错了什么?或者应该是这样吗?

你应该简单地用
let替换
let
,这将直接创建对象