如何在测试中更改 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.save
或 update_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
这是我的工厂:
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.save
或 update_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