2015-08-15 28 views
2

我正在使用rails 3(rails (3.2.13))应用程序,我正在使用factory_girl_rails (4.5.0)rspec (2.13.0)factory_girl瞬态属性的未定义方法

我有一个delivery工厂,看起来像这样

FactoryGirl.define do 

    factory :delivery do 

    trait :assigned do 
     delivery_type 1 
    end 

    trait :started do 
     delivery_type 2 
    end 

    factory :delivery_with_jobs do 

     ignore do 
     jobs_count = 2 
     duration = 10 
     end 

     after(:create) do |delivery, evaluator| 
     create_list(:job, evaluator.jobs_count, delivery: delivery, client: delivery.client) 
     end 
    end 
    end 
end 

,我尝试在我的规格来实例化这样

let!(:delivery_with_jobs) { 
     FactoryGirl.create(
      :delivery_with_jobs, 
      :started, 
      jobs_count: 3, 
      user: user, 
      current_user: user, 
      account: user.account, 
      client: client 
     ) 
     } 

事情正在运行测试,还当我不断收到NoMethodError: undefined method 'jobs_count' for #<FactoryGirl::SyntaxRunner:0x000000079e5f00>试图在轨道控制台中创建工厂。我对factory_girl第一and have found this post更低的版本。所以,我试图改变关键字ignore这并没有帮助,所以我试图升级工厂女孩也没有帮助。

当我省略jobs_count参数从FactoryGirl.create(:delivery_with_jobs)我也得到了同样的错误。

我做错了什么?你对这个问题的原因有什么建议吗?

在此先感谢。

+0

的[用于FactoryGirl瞬态变量未定义方法]可能重复(http://stackoverflow.com/questions/25510268/undefined-methods-for- factorygirl-transient-variables) –

+1

我在我的问题中引用了该帖子。这不是我的问题的解决方案,我也在我的问题中提到过。问题是,在“=” S在短暂的变量定义 – raethlo

回答

2

你忽略/瞬变块不应该有= S

ignore do 
    jobs_count 2 
    duration 10 
end 
+0

是啊,非常感谢,我检查了一百次了这样的一个语法错误,但没有注意到它... – raethlo