首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用`perform_in`方法时用水原编写一个特征测试

在使用`perform_in`方法时用水原编写一个特征测试
EN

Stack Overflow用户
提问于 2021-04-27 03:50:05
回答 2查看 455关注 0票数 0

我能找到的大多数东西都是关于测试背景作业是否像问题一样被排定的。

但是,我需要编写一个特性测试,它实际上等待后台作业的执行,因此,让我们假设:

代码语言:javascript
复制
BatchWorker.perform_in(30.minutes)

我需要编写一个特性测试,根据这项工作的结果,在30分钟内执行一些断言。怎么做?

更新

只是为了澄清..。我不需要测试作业是否已排队,例如,使用rspec-sidekiq gem,您可以执行以下操作

代码语言:javascript
复制
Awesomejob.perform_in 30.minutes, 'Awesome', true
# test with...
expect(AwesomeJob).to have_enqueued_sidekiq_job('Awesome', true).in(30.minutes)

这不是我需要的..。在执行任务后,我需要在页面上声明一下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-27 16:06:35

我假设您实际上不想在测试期间等待30分钟,而是希望立即执行任务(否则您只睡30分钟,但实际上什么也得不到)。Sidekiq适配器有许多方法可以帮助解决这个问题,比如Sidekiq::Testing.fake!Sidekiq::Testing.inline!。在您的示例中,对于此测试,您可能希望使用inline!来立即执行作业。

代码语言:javascript
复制
require "sidekiq/testing"
Sidekiq::Testing.inline!

如果使用fake!,则需要调用drain_all,以便执行已排队的作业。您可以在https://sloboda-studio.com/blog/testing-sidekiq-jobs/或sidekiq wiki中或在https://github.com/mperham/sidekiq/wiki/Testinghttps://github.com/mperham/sidekiq/blob/master/lib/sidekiq/testing.rb上阅读更多有关这方面的内容。

票数 2
EN

Stack Overflow用户

发布于 2021-04-27 09:45:09

您可以签出rspec-sidekiq

代码语言:javascript
复制
Awesomejob.perform_in 30.minutes, 'Awesome', true
# test with...
expect(AwesomeJob).to have_enqueued_sidekiq_job('Awesome', true).in(30.minutes)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67276737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档