ruby-on-rails - RSpec:关联对象的工厂定义

标签 ruby-on-rails rspec factory-bot

我有以下三个型号:Product , WarehouseInventory

# app/models/product.rb
class Product < ApplicationRecord
  has_many :inventories
  has_many :warehouses, through: :inventories  
end

# app/models/warehouse.rb
class Warehouse < ApplicationRecord
  has_many :inventories
  has_many :products, through: :inventories
end

# app/models/inventory.rb
class Inventory < ApplicationRecord
  belongs_to :product
  belongs_to :warehouse
end
我有这个库存工厂:
FactoryBot.define do
  factory :inventory do
    product { nil }
    warehouse { nil }
    item_count { 1 }
    low_item_threshold { 1 }
  end
end
我如何将这个工厂用于库存,或者我的其他工厂需要进行哪些更改,以便我可以拥有这样的规范?
RSpec.describe Inventory, type: :model do
  it "has a valid factory" do
   expect(FactoryBot.build(:inventory)).to be_valid
  end
end

最佳答案

您需要的是更改:inventory工厂定义,像这样

FactoryBot.define do
  factory :inventory do
    product
    warehouse
    item_count { 1 }
    low_item_threshold { 1 }
  end
end
这将“告诉”工厂机器人实例化关联的对象( https://github.com/thoughtbot/factory_bot/blob/master/GETTING_STARTED.md#associations )
但要使其正常工作,您需要定义 warehouseproduct工厂。

关于ruby-on-rails - RSpec:关联对象的工厂定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59022462/

相关文章:

ruby-on-rails - 在具有 ActionController::TestResponse 的 Controller 规范中使用 Capybara 匹配器

ruby-on-rails - 邪恶的 PDF : How to remove top margin from COVER page?

ruby-on-rails - 使用 Spork 时如何加载机械师的蓝图?

ruby - 为什么使用 AJAX 的 rspec 示例无法正常工作?

ruby-on-rails - 如何在 factory_girl 中创建一个对象来验证它至少有一个关联对象?

ruby-on-rails - FactoryBot 对象缺少某些属性

ruby-on-rails - 在 factorygirl 中,有什么方法可以在初始化 field2 时引用 field1 的值?

ruby-on-rails - 在 bootstrap/rails 中动态创建行和列

ruby-on-rails - 部署后如何重启puma?

ruby-on-rails - PeopleController 创建操作应在模型有效时重定向