gpt4 book ai didi

ruby-on-rails - 如何取消设置 FactoryBot 特征中的属性?

转载 作者:行者123 更新时间:2023-12-05 01:15:00 25 4
gpt4 key购买 nike

在我的模型中,我有一个具有默认值的属性 foo

我想编写一个与 foo 默认值相关的测试,但我的 FactoryBot 将其设置为 nil(并覆盖了默认值)。

如果我从工厂机器人中删除 foo 它会破坏一些其他测试。所以我想使用类似 trait 的东西来创建一个 foo 不是网络的案例,但我没有找到任何方法取消设置属性。

有什么方法可以取消 FactoryBot 中的属性设置吗?

FactoryBot.define do
factory :my_model do
foo { 'abc' }
bar { 'abc' }

trait(:foo_not_set) do
# magic to unset foo
end
end
end

最佳答案

您可以使用 transient block 来使用虚拟属性:

FactoryBot.define do
factory :my_model do
bar { 'abc' }

transient do
default_values true
end

before(:create) do |my_model, evaluator|
if evaluator.default_values?
foo { 'abc' }
end
end

trait(:foo_not_set) do
transient do
default_values { false }
end
end
end
end

关于ruby-on-rails - 如何取消设置 FactoryBot 特征中的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57089989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com