【问题标题】:Using let does not save the record使用 let 不保存记录
【发布时间】:2018-02-20 12:06:13
【问题描述】:

举个简单的例子:

let(:item) { create(:item }
it 'query by scope' do
  expect(Item.all.length).to eq 1
end

测试没有通过。

在 it 块中添加item.save,测试通过。使用before(:each) { create(:item) } 而不是let 也可以使测试通过。

听起来很明显,我可能会遗漏这一点,为什么let 在这种情况下没有有效地创建记录?

【问题讨论】:

    标签: testing rspec ruby-on-rails-5


    【解决方案1】:

    请改用let!let 被延迟评估,let! body 被立即调用。

    您提供的所有示例都是有效的,因为 let 被延迟评估。您也可以在其中调用item(不带save),它也应该通过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多