举出以下简单示例:
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
在这种情况下无法有效地创建记录?
答案 0 :(得分:1)
请改用let!
。 let
被懒惰地评估,let!
身体立即被召唤。
由于let
被懒惰评估,您提供的所有示例都有效。你也可以在里面调用item
(没有save
),它也应该通过。