小编Lii*_*iva的帖子

为什么'FactoryGirl.lint'给出InvalidFactoryError?

很长时间的读者,但第一次在这里的海报SO :)

在过去的几天里,我一直在设置FactoryGirl.

昨天我更换了一些工厂(主要是我的用户品牌工厂)

Language.find_or_create_by_code('en')
Run Code Online (Sandbox Code Playgroud)

附:

Language.find_by_code('en') || create(:language)
Run Code Online (Sandbox Code Playgroud)

因为第一个选项创建一个只填充了代码属性的Language对象; 而第二个使用语言工厂来创建对象(从而填充工厂中指定的所有属性)

现在,当我运行我的测试时,它立即在Factory.lint上失败,说明我的用户(和admin_user)工厂无效.恢复上面的代码并不能解决这个问题,并且提供的堆栈跟踪FactoryGirl.lint非常无用.

当我评论lint函数时,我的测试实际运行正常,没有任何问题.
当我在rails控制台中手动创建工厂并使用.valid?它时,它返回true,所以我不知道为什么lint认为我的工厂无效.

我的用户工厂看起来像这样:

FactoryGirl.define do

  factory :user do
    ignore do
      lang { Language.find_by_code('en') || create(:language) }
    end

    login "test_user"
    email "test_user@test.com"
    name "Jan"
    password "test1234"
    password_confirmation "test1234"
    role               # belongs_to :role
    brand              # belongs_to :brand
    person             # belongs_to :person
    language { lang }  # belongs_to :language

    factory :admin_user do
      association :role, factory: :admin
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

这里的作用,个人 …

ruby-on-rails rspec2 factory-bot

4
推荐指数
1
解决办法
3554
查看次数

标签 统计

factory-bot ×1

rspec2 ×1

ruby-on-rails ×1