You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地运行 Oban 任务并验证其执行是否正常

本地验证Oban任务的实现方案

方案1:直接调用任务逻辑(最快验证)

不需要走Oban调度流程,直接验证函数逻辑是否符合预期:

  • 在项目根目录执行iex -S mix进入Elixir交互控制台
  • 直接执行ObanJobOne.job(nil),此时控制台会直接输出IO.inspect打印的SQL内容
  • 执行完成后到你配置的文件生成路径,检查文件内容是否符合预期即可

方案2:通过Oban队列调度运行(模拟真实生产场景)

如果要验证任务在Oban调度体系下的执行表现,按以下步骤操作:

  1. 首先把任务改造为符合Oban规范的Worker结构:
defmodule ObanJobOne do
  # 这里的queue参数对应你项目中配置的Oban队列名
  use Oban.Worker, queue: :default

  @impl Oban.Worker
  def perform(_args, _job) do
    """
    some sql query
    """
    |> IO.inspect
    # 原有映射、生成文件逻辑
    :ok
  end

  # 可保留原有job函数,也可以直接把逻辑迁移到perform中
  def job(_) do
    # 原有逻辑
  end
end
  1. 确保本地Oban服务已经正常启动(默认在dev环境下配置了Oban的话,项目启动时会自动运行)
  2. 进入iex -S mix控制台,执行ObanJobOne.new(%{}) |> Oban.insert()将任务插入队列
  3. 任务执行时控制台会打印IO.inspect的输出,执行完成后检查生成的文件即可
  • 如果需要验证Cron配置是否正确,可在dev环境的Oban配置中把该任务的Cron触发间隔改短(例如设置为每分钟触发一次),启动项目后观察控制台输出和文件生成情况即可

方案3:自动化测试验证

如果需要编写可重复执行的测试用例,使用Oban官方测试工具实现:

  1. 在test/test_helper.exs中开启Oban测试模式:
Oban.start(testing: :inline)

inline模式下插入的Oban任务会同步执行,无需等待调度
2. 编写测试用例验证逻辑:

test "ObanJobOne 生成正确的结果文件" do
  # 执行任务
  :ok = ObanJobOne.perform(%{}, %{})

  # 读取生成的文件断言内容符合预期
  file_content = File.read!("/你的/文件/生成/路径/xxx")
  assert file_content == "期望的文件内容"
end

注意:如果你的文件生成路径用的是相对路径,默认是相对于项目根目录,检查文件时不要找错路径。

内容的提问来源于stack exchange,提问作者hnhl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 00:57:03