2016-10-05 51 views
0

設定值FactoryGirl:如何我使用工廠女孩與特點,並試圖找出如何設置下面的「答案」值嵌套結構

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

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

我試過以下,但繼續運行到「ArgumentError:特徵未註冊:回答」。

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

還嘗試將transient { answer ' ' }添加到特徵。

還嘗試將attr_accessor字段添加到Example類。

class Example 
    attr_accessor :questions, :answer 
end 
+0

這是模型'has_many:questions'嗎? – Makoto

+0

在這種情況下,不,這個數組裏面只有一個問題......這是針對自動化測試的,在應用程序中可能有多個問題 – zmorris

+0

您可能誤解了我的問題。你使用的工廠風格意味着這是由特定的ActiveRecord模型支持的。那麼我的問題是,這個特定的模型是否支持多個問題(即使測試只需要一個)呢? – Makoto

回答

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