给出下面的简单例子:
let(:item) { create(:item }
it 'query by scope' do
expect(Item.all.length).to eq 1
end
测试没有通过。
item.save
在 it 块中添加,测试通过。使用 abefore(:each) { create(:item) }
而不是let
使测试也通过。
听起来很明显,作为我可能遗漏的一点,为什么let
在这种情况下不能有效地创建记录?
请let!
改用。let
被懒惰地评估,let!
身体立即被调用。
你提供的所有例子都是有效的,因为let
被懒惰地评估。您也可以item
在它内部调用(没有save
),它也应该通过。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句