所以我有一家工厂:
factory :person do
password_string { Faker::Lorem.words(3).join }
after(:create) do |object|
object.password = object.password_hash(object.password_string)
object.save!
end
end
我收到错误:
NoMethodError:
undefined method `password_string=' for #<Person:0xe1cdf00>
这是预期的,但我想为我的测试环境定义password_string(主要是因为我可以模拟已登录的用户)。有没有办法通过定义工厂独有的属性来绕过NoMethodError?
谢谢,
答案 0 :(得分:3)
是的,你可以!通常你会把它们放在一个特性上,不确定你是否可以将它们放在一个普通的工厂上。
trait :with_password_string do
ignore do
password_string nil
end
after(:build) do |content, evaluator|
if evaluator.password_string
content.password = content.password_hash(evaluator.password_string)
end
end
end