如何在测试中更改 Factory girl 布尔属性

How to change Factory girl boolean attribute inside the test

这是我的工厂:

factory :acceptance do
    favor
    user
    accepted false
  end

这是我的要求规格:

describe "to acceptances" do
    let (:favor) { create(:favor, user: user) }
    let (:acceptance) { create(:acceptance, user: user, favor: favor)}

    context "when has accepted acceptance" do
      it "shold not allow sending more acceptances" do
        acceptance.accepted = true
        expect(permission.allow?(:acceptances, :create, favor)).to be false
      end

问题出在 acceptance.accepted = true。正如我发现的那样,这并不是将 accepted 属性设置为 true。我怎样才能做到这一点?

非常感谢您的宝贵时间!

您需要保存记录,否则您只是更改了接受的本地副本。添加 acceptance.saveupdate_attribute 将为您保存。

describe "to acceptances" do
  let (:favor) { create(:favor, user: user) }
  let (:acceptance) { create(:acceptance, user: user, favor: favor)}

  context "when has accepted acceptance" do
    it "shold not allow sending more acceptances" do
      acceptance.update_attribute(:accepted, true)
      expect(permission.allow?(:acceptances, :create, favor)).to be false
    end
  end
end