问题标签 [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.
rspec - 为 sidekiq 工作人员编写测试
我正在使用rspec-sidekiq
gem ( https://github.com/philostler/rspec-sidekiq ) 来帮助测试我正在编写的工人,但由于某种原因,我的测试一直失败。
这是我的测试:
这是错误:
我在他们的 wiki 上基于他们的示例进行了低级测试,但它对我不起作用……有什么理由不起作用?
ruby-on-rails - 测试 Sidekiq 是否收到正确的延迟作业
在我的用户模型中,我正在调用延迟方法:
我正在尝试像这样测试它(使用rspec-sidekiq gem):
这就是我得到的:
这基本上可以工作,只是格式有点不同。
如何修复此测试以确保 Sidekiq 完全接收具有此属性的此方法?
ruby - 使用 RSpec 3 测试 sidekiq perform_in
RSpec 3 和 sidekiq 3.2.1。我已经正确设置了 sidekiq 和 rspec-sidekiq。
假设我有一个名为 的工人WeatherJob
,它将天气状态从更改sunny
为rainy
:
我像这样使用这个工人:
WeatherJob.perform_in 15.minutes, weather.id
.
在规范中,我使用 Timecop 来模拟时间:
我可以看到Weather.jobs
数组中有工作。时间是正确的 16 分钟后。但它没有执行任务?有什么建议吗?谢谢!
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
这是解决方法:
像魅力一样工作!:)
非常感谢
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:
任何帮助,将不胜感激。
ruby - Sidekiq 测试 perform_in
我想知道是否有任何方法可以测试 sidekiq 是否在 X 秒内正确执行作业(或将要在 X 秒内执行的作业排入队列),如perform_in
调用中指定的那样。
据我所知,文档并没有提到任何允许这样做的模式。在fake
模式下,似乎作业直接添加到队列中并在drain
调用时立即执行。
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”期间测试一个方法是否属于另一个类?也许找到某种方法将方法作为符号发送?
ruby-on-rails - 使用 Sidekiq 测试异步 ActionMailer 方法的解组
TLDR;如何测试异步 ActionMailer 操作(使用 Sidekiq)的 PORO 参数是否正确序列化和反序列化?
Sidekiq 提供 RSpec 匹配器,用于测试作业是否入队并执行作业(使用给定参数)。
--
为了给您一些背景信息,我有一个带有 ActionMailer 的 Ruby on Rails 4 应用程序。ActionMailer 中有一个方法,它接受 PORO 作为参数 - 引用我在电子邮件中需要的数据。我使用 Sidekiq 来处理后台作业。事实证明,当 Sidekiq 决定执行这项工作时,反序列化将失败的论点存在问题。我还没有找到一种方法来测试 un/marshaling 的正确性,以便在执行时使用我调用该操作的 PORO。
例如:
给定一个带有动作的 ActionMailer
...
我会这样使用它
...
并进行这样的测试(但这失败了)
任何帮助将不胜感激。
rspec - rspec-sidekiq have_enqueued_sidekiq_job 未定义的方法在
导致我收到此错误
这是我的 rspec 宝石
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!
或我应该嘲笑它?