- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的工作线程正在访问其自己的队列的大小:
需要“sidekiq/api”
class TestWorker
include Sidekiq::Worker
def perform(*args)
Sidekiq::Queue.new('test').size
end
end
然后我正在测试这个工作人员:
require 'rails_helper'
RSpec.describe TestWorker, type: :worker do
describe '#perform' do
it 'executes the job without connecting to Redis in the testing environment' do
require 'sidekiq/testing'
Sidekiq::Testing.fake! do
TestWorker.perform_async
TestWorker.drain
end
end
end
end
此测试失败,因为它尝试访问 redis:
1) TestWorker#perform executes the job without connecting to Redis in the testing environment
Failure/Error: Sidekiq::Queue.new('test').size
Redis::CannotConnectError:
Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:344:in `rescue in establish_connection'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:328:in `establish_connection'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:99:in `block in connect'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:291:in `with_reconnect'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:98:in `connect'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:363:in `ensure_connected'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:219:in `block in process'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:304:in `logging'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:218:in `process'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/client.rb:118:in `call'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis.rb:1062:in `block in llen'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis.rb:45:in `block in synchronize'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis.rb:45:in `synchronize'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis.rb:1061:in `llen'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq/api.rb:217:in `block in size'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq.rb:95:in `block in redis'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/connection_pool-2.2.2/lib/connection_pool.rb:65:in `block (2 levels) in with'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/connection_pool-2.2.2/lib/connection_pool.rb:64:in `handle_interrupt'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/connection_pool-2.2.2/lib/connection_pool.rb:64:in `block in with'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/connection_pool-2.2.2/lib/connection_pool.rb:61:in `handle_interrupt'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/connection_pool-2.2.2/lib/connection_pool.rb:61:in `with'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq.rb:92:in `redis'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq/api.rb:217:in `size'
# ./app/workers/test_worker.rb:7:in `perform'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq/testing.rb:301:in `execute_job'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq/testing.rb:296:in `block in process_job'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq/middleware/chain.rb:128:in `block in invoke'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq/middleware/chain.rb:133:in `invoke'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq/testing.rb:295:in `process_job'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq/testing.rb:279:in `drain'
# ./spec/workers/test_worker_spec.rb:8:in `block (4 levels) in <top (required)>'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq/testing.rb:16:in `__set_test_mode'
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/sidekiq-5.1.3/lib/sidekiq/testing.rb:30:in `fake!'
# ./spec/workers/test_worker_spec.rb:6:in `block (3 levels) in <top (required)>'
# ------------------
# --- Caused by: ---
# IO::EINPROGRESSWaitWritable:
# Operation now in progress - connect(2) would block
# /home/matthieu/.rvm/gems/ruby-2.4.3/gems/redis-4.0.1/lib/redis/connection/ruby.rb:180:in `connect_addrinfo'
根据与 Sidekiq::Testing.fake 相关的 Sidekiq 文档! “Sidekiq 不是将作业推送到 Redis,而是将它们推送到您可以访问的作业数组中”
为什么 Sidekiq::Queue.new('test').size
尝试连接到 Redis,而不是检查测试环境中作业数组的大小?
有没有办法让 Sidekiq::Queue
与 Sidekiq::Testing.fake!
一起工作,还是我应该模拟它?
最佳答案
Sidekiq's API does not have a testing mode, [it] will always hit Redis.
关于ruby-on-rails - Sidekiq::测试.假的!不伪造 Sidekiq::Queue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51669660/
我对 FakeItEasy(或其他模拟对象,因为我相信它们非常相似)有疑问。以下是我的 puesdocode: public class Service { public void Check
我想使用鼠标/键盘伪造操作(或触摸)事件。当我尝试使用以下方法引发事件时: RoutedEventArgs e = new RoutedEventArgs(ManipulationStartedEve
出于某种原因,我的 SVN 存储库的本地副本停止将父目录识别为工作副本。我通常会通过再次 checkout 到另一个文件夹并用我更改的文件覆盖新的工作副本来解决此问题。然后我会从新文件夹中进行提交。
我正在尝试设置我的开发实例,以便我可以伪造一些我拥有的网址。我的网站有许多网址,根据您访问的网址,我的网站的行为会因域的不同而有所不同。 我编辑了我的 C:\WINDOWS\system32\driv
当用户登录并选中“记住我”框时,我会为它生成一个 key (md5 上非常随机的数字)并保存在它的 cookie 上。如果用户未登录,我的代码会检查“记住我的 key ”cookie,如果它与用户匹配
有没有办法强制 Oracle 也“看到”一个表和相关索引比它们实际更大? 换句话说,有没有办法“伪造”数据库统计信息,因此基于成本的优化器会在几乎为空的数据库上做出决策,这更接近于在真实的大型生产数据
这是我使用 tsqlt 的第一天,所以你可能会看到一些含糊的陈述。 我正在尝试测试一个具有 Try Catch Block 的存储过程,但测试中的实际语句是插入和更新命令。 现在我想测试如果出现 Er
我从mockito开始,想知道如何假装添加观察者。我想编写一个测试来确保观察者计数在函数调用后增加。 示例测试代码: MyClassUnderTest instance = new MyClassUn
我是一名 C# 游戏开发人员,我有一个安全功能,我的服务器动态创建一个包含一些 key 的 DLL,并将这个 DLL 上传到 amazon s3,然后向人们提出挑战随机的。当客户收到此质询时,他们有
我正在尝试“伪造”一个 Canvas ,目的是将这个伪造的 Canvas 交给一个可能是任意的框架,以对所有直线、曲线和 moveTo 进行后处理。 为了解决这个问题,我尝试了这段代码,它确实有效,但
我的应用程序需要 SQL Server 2000 作为数据库存储。我真的不想使用 SQL Server 2000,但我可以改用 MySQL Server。 应用程序使用 ODBC 连接到 SQL Se
我有一个下拉菜单,需要一个带有左右边距的滚动条。我正在使用-webkit-scrollbar,但据我所知,它只支持沿滚动轴的边距,所以我一直在用容器内元素的右边距来近似水平边距,并在外部 div,如您
作为我学生小组业余项目的一部分,我正在创建微 Controller 有线网络的模拟,以测试我们编写的算法。每个 Controller 都连接到多个数据端口,每个端口都有一个输入和输出流。我通过给每个端
我已经在 Forge 中安装了自定义 SSL 证书。现在我的网站宕机了 -_-。 Site is not available connection refused 我已经重新启动了我的服务器,但没有任
我正在开发具有 ListView 和详细 View 的应用程序,并且我从 ListView 到详细 View 设置动画。在执行此操作时,我想在某个阶段隐藏状态栏(最好同时在后台显示 ListView
我想用它在 MS-Test 单元测试中伪造 System.Net.Mail.SmtpClient。为此,我添加了一个 System.dll 的 Fakes Assembmly。然后我创建一个 Shim
在我的 Playframework 2.4 项目中,我有这样的方法: public static Result resetValue(int client) { String received
这是我渲染场景的过程: 绑定(bind) MSAA x4 GBuffer(4 种颜色附件、位置、法线、颜色和无光照颜色(仅天空盒。我还有一个深度组件/纹理)。 绘制天空盒 绘制地理 将所有颜色和深度分
我不太确定 $_SESSION 在 PHP 中是如何工作的。我假设它是浏览器上的 cookie 与服务器上的唯一 key 匹配。是否可以伪造并绕过仅使用 session 来识别用户的登录。 如果 $_
大家好,我是沙漠尽头的狼。 本文首发于 Dotnet9 ,介绍使用 Lib.Harmony 库拦截第三方 .NET 库方法,达到不修改其源码并能实现修改方法逻辑、预期行为的效果,并
我是一名优秀的程序员,十分优秀!