我如何使用rspec& amp;测试将来需要发生的事情? sidekiq?

时间:2016-07-12 17:28:21

标签: ruby sidekiq

用户可以从我的Rails店面结账,从而创建order。假设用户没有取消,我想在一个月后创建重复订单。

因为我认为现在更好地寻找要做的事情,而不是计划将来发生的事情,我希望能找到需要处理的订单并为每次事件创建一个Sidekiq作业。这些作业中的每一个都将创建一个新订单,其内容与前一个订单相同。

因为我想使用TDD,在我将Sidekiq添加到我的项目或实现此功能之前,我想写一个rspec测试,告诉我我的工作在适当的时候排队。然后我将实现入队并继续编写一个规范,确认该作业实际上创建了一个新订单,此时我将去实现它。

我的问题是我应该如何实施测试以确保创建作业?

我看到ActiveSupport::Testing::TimeHelpers已取代Timecop,所以我全都用它。我的第一个想法是这样做:

  1. 创建订单
  2. 快进一个月
  3. 确认已创建作业以处理需要处理的订单
  4. 但我很确定在这种情况下不会有工作,所以我不确定如何继续。

1 个答案:

答案 0 :(得分:0)

rspec-sidekiq gem

中有have_enqueued_job个测试人员

他们的文档示例

AwesomeJob.perform_async 'Awesome', true
# test with...
expect(AwesomeJob).to have_enqueued_job('Awesome', true)