问题标签 [rspec-sidekiq]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
30644 浏览

rspec - 为 sidekiq 工作人员编写测试

我正在使用rspec-sidekiqgem ( https://github.com/philostler/rspec-sidekiq ) 来帮助测试我正在编写的工人,但由于某种原因,我的测试一直失败。

这是我的测试:

这是错误:

我在他们的 wiki 上基于他们的示例进行了低级测试,但它对我不起作用……有什么理由不起作用?

0 投票
1 回答
1734 浏览

ruby-on-rails - 测试 Sidekiq 是否收到正确的延迟作业

在我的用户模型中,我正在调用延迟方法:

我正在尝试像这样测试它(使用rspec-sidekiq gem):

这就是我得到的:

这基本上可以工作,只是格式有点不同。

如何修复此测试以确保 Sidekiq 完全接收具有此属性的此方法?

0 投票
4 回答
8650 浏览

ruby - 使用 RSpec 3 测试 sidekiq perform_in

RSpec 3 和 sidekiq 3.2.1。我已经正确设置了 sidekiq 和 rspec-sidekiq。

假设我有一个名为 的工人WeatherJob,它将天气状态从更改sunnyrainy

我像这样使用这个工人:

WeatherJob.perform_in 15.minutes, weather.id.

在规范中,我使用 Timecop 来模拟时间:

我可以看到Weather.jobs数组中有工作。时间是正确的 16 分钟后。但它没有执行任务?有什么建议吗?谢谢!

0 投票
1 回答
1960 浏览

ruby-on-rails - Sidekiq 尝试在测试环境中运行

我有一个非常奇怪的问题:Sidekiq 尝试在测试环境中建立与 Redis 的连接。我在带有 ruby​​ 2.1.2 的 rails 4.1.4 上使用 sidekiq 3.2.2 和 rspec-sidekiq 2.0.0.beta

这是我的测试

如果我尝试使用工作的 redis 运行 bundle exec rspec,我会得到非常好的输出:

但是,如果我尝试使用停止的 redis 运行测试,我会得到这个:

我只是不知道为什么会这样。

我还在 Github 上的 sidekiq 中打开了一个新问题https://github.com/mperham/sidekiq/issues/1907

你能帮忙吗?

非常感谢。

更新

正如@infused 提到的,有一个错误:https ://github.com/tobiassvn/sidetiq/issues/103

这是解决方法:

像魅力一样工作!:)

非常感谢

0 投票
0 回答
276 浏览

ruby-on-rails - 无法使用 jRuby 和 Rails 4.1.4 运行我的 rspec 测试

我有一个 Rails 应用程序 (4.1.4) 在 Java HotSpot(TM) 64 位服务器 VM 1.7.0_67-b01 上运行 jRuby 1.7.15 (1.9.3p392) 2014-09-03 82b5cc3。

您可以在以下网址查看我的 Gemfile:https ://gist.github.com/eqbal/fe9477ddc20c6a9088fb 。

我的 Gemfile.lock:https ://gist.github.com/eqbal/17a3dc5d6a4024d62cc0 。

如您所见,我正在使用 rspec (2.14.1) 和 rspec-rails (2.14.2)。

我有一个类似这样的 user_spec.rb 文件:

一旦我运行测试,我会得到以下结果:

我的 rspec 在本地安装:

如果我转而使用 ruby​​-2.0.0-p353 并捆绑安装 gems,然后尝试运行相同的测试,我会得到以下信息:

请注意本地安装的gems:

任何帮助,将不胜感激。

0 投票
1 回答
1554 浏览

ruby - Sidekiq 测试 perform_in

我想知道是否有任何方法可以测试 sidekiq 是否在 X 秒内正确执行作业(或将要在 X 秒内执行的作业排入队列),如perform_in调用中指定的那样。

据我所知,文档并没有提到任何允许这样做的模式。在fake模式下,似乎作业直接添加到队列中并在drain调用时立即执行。

0 投票
1 回答
2632 浏览

ruby-on-rails - rspec-sidekiq:如何用另一个类方法测试“within_sidekiq_retries_exhausted_block”

我正在使用 gem "rspec-sidekiq" 来测试 "sidekiq_retries_exhausted"。

这是我的工人:

这是来自“rspec-sidekiq”github 的示例:

我认为它应该将“sidekiq_retries_exhausted”块中的方法作为符号输入到测试中。我按照这种方式,但它不起作用。

这是我的测试。看看receive()方法:

这是我的日志:

那么,有没有办法在“sidekiq_retries_exhausted”期间测试一个方法是否属于另一个类?也许找到某种方法将方法作为符号发送?

0 投票
1 回答
160 浏览

ruby-on-rails - 使用 Sidekiq 测试异步 ActionMailer 方法的解组

TLDR;如何测试异步 ActionMailer 操作(使用 Sidekiq)的 PORO 参数是否正确序列化和反序列化?

Sidekiq 提供 RSpec 匹配器,用于测试作业是否入队并执行作业(使用给定参数)。

--

为了给您一些背景信息,我有一个带有 ActionMailer 的 Ruby on Rails 4 应用程序。ActionMailer 中有一个方法,它接受 PORO 作为参数 - 引用我在电子邮件中需要的数据。我使用 Sidekiq 来处理后台作业。事实证明,当 Sidekiq 决定执行这项工作时,反序列化将失败的论点存在问题。我还没有找到一种方法来测试 un/marshaling 的正确性,以便在执行时使用我调用该操作的 PORO。

例如:

给定一个带有动作的 ActionMailer

...

我会这样使用它

...

并进行这样的测试(但这失败了)

任何帮助将不胜感激。

0 投票
1 回答
648 浏览

rspec - rspec-sidekiq have_enqueued_sidekiq_job 未定义的方法在

导致我收到此错误

这是我的 rspec 宝石

0 投票
1 回答
2926 浏览

ruby-on-rails - Sidekiq::Testing.fake!不伪造 Sidekiq::Queue

我有一个简单的工作人员正在访问自己队列的大小:

需要'sidekiq/api'

然后我正在测试这个工人:

此测试失败,因为它尝试访问 redis:

根据与 Sidekiq::Testing.fake 相关的 Sidekiq 文档!“Sidekiq 不是将作业推送到 Redis,而是将它们推送到您可以访问的作业数组中”

为什么Sidekiq::Queue.new('test').size在测试环境中尝试连接 Redis 而不是检查作业数组的大小?

有没有办法Sidekiq::Queue使用Sidekiq::Testing.fake!或我应该嘲笑它?