使用let不会保存记录

时间:2018-02-20 12:06:14

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

举出以下简单示例:

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在这种情况下无法有效地创建记录?

1 个答案:

答案 0 :(得分:1)

请改用let!let被懒惰地评估,let!身体立即被召唤。

由于let被懒惰评估,您提供的所有示例都有效。你也可以在里面调用item(没有save),它也应该通过。