ruby-on-rails - Ruby on Rails 和 Sidekiq redis 连接池与并行测试?
问题描述
我想并行运行我的 Rails 测试。我目前正在使用 Sidekiq 自己的连接池与 redis 通信。这里的问题是,如果我运行并行测试,它们会相互冲突。Rails 有一个非常好的内置测试数据库系统,它为执行测试的每个线程创建 postgresql 的数据库克隆。我将如何使用 Sidekiq redis 连接池来做到这一点?
解决方案
您的测试根本不应该连接到 redis。就像在测试环境中处理电子邮件的方式一样,默认情况下,Sidekiq 将为测试环境中的任何计划作业使用假队列。
基本上 - 并行运行测试不会导致 Sidekiq 作业出现任何问题。
您应该首先阅读有关测试的文档 - https://github.com/mperham/sidekiq/wiki/Testing
本质上,您可以测试以查看是否已使用以下方式安排了作业:
HardWorker.perform_async(1, 2)
HardWorker.perform_async(2, 3)
assert_equal 2, HardWorker.jobs.size
如果您需要运行作业,只需排空队列:
HardWorker.drain
assert_equal 0, HardWorker.jobs.size
更多详细信息请参见上面的链接。
推荐阅读
- makefile - 基于目标的 Makefile 环境
- powershell - Chrome 安装错误:“Egads!安装失败”
- python - 熊猫与独特的匹配合并
- php - 未找到特征“Laravelista\Comments\Comments\Traits\Comments”
- networking - 如何在 2 个 Kubernetes 集群之间配置 VPN 连接
- python - 如何修复列表索引超出范围错误?
- javascript - 没有使用 Avahi/Zeroconf (machineName.local) 的 Service Worker
- mecab - 为什么会发生运行时错误?导入 Mecab 后
- php - Wordpress中标签的不同颜色?
- flutter - 将小部件扩展到列表视图中的父项