如何在FactoryGirl中为嵌套结构设置值

时间:2016-10-05 14:55:25

标签: ruby factory-bot

我正在使用具有特征的Factory Girl,并试图弄清楚如何设置答案'价值低于:

factory :example_factory do
    user 'TEST'
    id 'blah'
end

trait :example_trait do
questions [
              {
                  question: "blah",
                  answer: "#{answer}"
              },
          ]
end

我已经尝试了以下方法,但仍然遇到了" ArgumentError:trait not registered:answer"。

FactoryGirl.build(:example, :example_trait, answer: 'custom')

还尝试将transient { answer ' ' }添加到特征中。

还尝试将attr_accessor字段添加到Example类。

class Example
    attr_accessor :questions, :answer
end

1 个答案:

答案 0 :(得分:0)

我想出来了。使用FactoryGirl,在动态设置属性时,必须将属性包装在{}中。由于这是一个内部有散列的数组,因此花括号需要位于整个数组的外部。

factory :example_factory do
  transient do
     ans ''
  end

  user 'TEST'
  id 'blah'
end

trait :example_trait do
questions --> {[
                {
                 question: "blah",
                 answer: ans
                },
              ]} <--
end