ruby - 如何测试 Sidekiq 作业失败?

标签 ruby unit-testing integration-testing sidekiq

sidekiq 中的作业,一旦出现异常,将被放入重试队列。

正因为如此,并且因为任务是异步运行的,MyWorker.perform_async(...) 永远不会抛出任务代码中生成的异常。

但是在测试中,任务中出现的异常不会导致任务被放入重试队列。异常从 perform_async 中冒出。

所以在测试中发生的事情是运行代码时不可能发生的事情。

那么,什么是测试代码的最佳方法,这些代码会触发可能会失败并被放入重试队列的作业?

请注意,以下内容似乎对测试没有影响:
Sidekiq.default_worker_options = { :retry => true}

最佳答案

它被设计得很难,因为你不应该这样做。您不应该测试 Sidekiq 功能。测试您自己的代码,而不是其他库/框架提供的功能。

关于ruby - 如何测试 Sidekiq 作业失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874510/

相关文章:

ruby-on-rails - 在 9 :00 AM in their Local Time Zone 向用户发送时事通讯

android - 如何使用 MockK 测试挂起功能?

c# - 异步文件写入问题

javascript - 如何使用 Jest 模拟 es6 类

java - @SpringBootTest 的一次性配置

unit-testing - 集成测试是一个总称吗?如果是,它包括哪些类型的测试?

ruby-on-rails - Rails - 当我推送到生产环境时我会丢失我的开发数据库吗?

ruby - 举例来说,Ruby 中的 print 和 puts 有什么区别?

Ruby:使用 block 迭代器的方法链接如何工作?

java - Spring Boot集成测试未在应用程序主方法内执行初始化步骤