Ala*_*ira 1 rspec ruby-on-rails factory-bot
在我的模型中,我有一个具有默认值的属性foo。
我想编写一个与foo的默认值相关的测试,但我的 FactoryBot 将其设置为 nil (并覆盖默认值)。
如果我从工厂机器人中删除foo它将破坏一些其他测试。所以我想使用类似trait 的东西来创建一个foo不是 net 的情况,但我没有找到任何方法来取消设置属性。
有没有办法在 FactoryBot 中取消设置属性?
FactoryBot.define do
factory :my_model do
foo { 'abc' }
bar { 'abc' }
trait(:foo_not_set) do
# magic to unset foo
end
end
end
Run Code Online (Sandbox Code Playgroud)
您可以使用瞬态块来处理虚拟属性:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |