使用ActiveJob进行RSpec,FactoryBot和模型回调

时间:2018-05-31 19:23:44

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

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

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

car.rb

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

规格/工厂/ cars.rb

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

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

0 个答案:

没有答案