代码之家  ›  专栏  ›  技术社区  ›  Ben

使用let不会保存记录

  •  1
  • Ben  · 技术社区  · 7 年前

    请给出以下简单示例:

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

    测试未通过。

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

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

    1 回复  |  直到 7 年前
        1
  •  2
  •   Greg    7 年前

    请使用 let! 相反 let 懒散地评估, 允许 立即调用body。

    您提供的所有示例都是有效的,因为 允许 被懒散地评估。你也可以打电话 item 内部(无 save )它也应该通过。