Factory Girl - 创建具有活动记录验证的工厂

时间:2015-06-19 13:53:04

标签: ruby ruby-on-rails-4 factory-bot

所以我有一个工厂来创建item。哪个可以包含一个或多个line_items

describe Item do
  let(:user) { create :user }
  let(:currency) { create :currency }
  subject(:item) { create :item, currency: currency, create_user: user, update_user: user }

创建具有有效记录验证的项目时失败:

ActiveRecord::RecordInvalid: Validation failed: You have not entered any data and cannot save a blank form., You have not entered any data and cannot save a blank form.

这是因为在创建项目时没有创建line_item吗?

在我的工厂,每当我创建一个line_item时,我都会创建一个项目:

FactoryGirl.define do
  factory :line_item do
    item
    create_user factory: :user
    update_user factory: :user
  end
end

1 个答案:

答案 0 :(得分:0)

确保您的模型已通过工厂中的模型验证进行验证。请粘贴你的模特。请尝试下面的代码。它没有经过测试,因此您必须根据您的模型进行医生处理。

FactoryGirl.define do
    factory :user do
        sequence(:username) { |n| "foo#{n}"}
        password "password"
        email {"#{username}@example.com"}
    end

    factory :item do
        name "item1"
        user
    end

    factory :line_item do
        name "line_item1"
        item
    end
end