ruby-on-rails - 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
解决方案
推荐阅读
- python - 在 sns.kdeplot 中获得第 80 个百分位
- javascript - 从 HTML 到 VUE 的脚本 - 单击时更改背景颜色
- javascript - forEach 循环以错误的顺序返回一些项目
- php - Woocommerce 隐藏添加到购物车按钮,可变产品除外
- delphi - 如何在没有第三方包的情况下在 Delphi 中应用简单的 XOR 加密/解密机制?
- android - 如何在 Retrofit 的 GET 方法中使用变量?
- elasticsearch - 如何修复集成网关:没有从 Peoplesoft 中的网关 (158,10829) 收到响应
- java - 未找到 json-simple.jar
- flutter - Flutter:如何从导航中正确返回?
- apache - 拒绝访问具有给定扩展名的所有文件,除了一个,我该怎么做?