【问题标题】:Undefined method for factory_girl transient attributesfactory_girl 瞬态属性的未定义方法
【发布时间】:2015-11-08 13:40:11
【问题描述】:

我正在开发 Rails 3 (rails (3.2.13)) 应用程序,我正在使用 factory_girl_rails (4.5.0)rspec (2.13.0)

我有一个看起来像这样的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
        )
      }

问题是我在运行测试以及尝试在 Rails 控制台中创建工厂时不断收到NoMethodError: undefined method 'jobs_count' for #<FactoryGirl::SyntaxRunner:0x000000079e5f00>。我使用的是较低版本的factory_girl,首先是and have found this post。所以我尝试将关键字更改为ignore 这没有帮助,所以我尝试升级工厂女孩也没有帮助。

当我从FactoryGirl.create(:delivery_with_jobs) 中省略jobs_count 参数时,我也会遇到同样的错误。

我做错了吗?您对导致此问题的原因有什么建议吗?

提前致谢。

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 rspec factory-bot


【解决方案1】:

你的忽略/瞬态块不应该有 =s

ignore do
  jobs_count 2
  duration 10
end

【讨论】:

  • 是的,非常感谢,我检查了一百次这样的语法错误,但没有注意到...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 2011-12-07
相关资源
最近更新 更多