首页 > 解决方案 > RSpec、FactoryBot 和带有 ActiveJob 的模型回调

问题描述

这很可能被问过很多次,但我似乎找不到任何东西,因为我不确定我应该实际搜索什么。

我有一个名为 的模型car,它有一个after_commit :new_car, on: :create并且在new_car方法中我有一个 ActiveJob 类,它会关闭并调用许多 API 来获取有关汽车的额外信息。我将如何使用 RSpec 和 FactoryBot 进行测试?当我打电话时,FactoryBot.create(:car)我想要额外的信息,以便我可以确认数据库中的列是否具有值,因为我将记录状态设置为complete作业完成时,这反过来会向最终用户显示记录。正如您可能已经猜到FactoryBot.create(:car)的那样,由于after_commit回调,当前无法正常工作。代码如下。如果有什么没有意义或者您需要查看更多代码,请告诉我。谢谢你。

碳水化合物

class Car < ApplicationRecord
  enum status: [:complete, :in_progress, :failed]

  after_commit :new_car, on: :create

  def new_car
    NewCarJob.perform_later(self.id)
  end
end

规格/工厂/汽车.rb

FactoryBot.define do
  factory :car do
    reg_number "FG780WE"

    # extra info from ActiveJob
    color ""
    Doors ""
    stolen ""
    finance ""
    mot_expires_at ""
    ...
  end
end

标签: ruby-on-railsrspecfactory-botrspec-rails

解决方案


推荐阅读