ruby-on-rails - rspec:如何测试 redis 发布
问题描述
我正在使用“实时”gem 来获取实时消息。
给定类似的东西(来自官方网站的代码)
# if using redis:
$redis.publish 'realtime_msg', {msg: 'hello world - ' + SecureRandom.hex, recipient_user_ids: [41, 42]}.to_json
如何使用 rspec 测试此代码?
解决方案
您可以添加一个间谍来$redis
断言publish
使用某些参数调用它,如下所示:
expect($redis).to receive(:publish).with('realtime_msg', /hello world/)`
最后一部分/hello world.*recipient_user_ids/
只是一个正则表达式示例,您可以使用它来匹配您作为第二个参数提供的 JSON 字符串publish
。您可以在那里使用自定义匹配器或任何其他符合您目的的 rspec 参数匹配器。
推荐阅读
- java - 当char是空格时如何比较而不得到负值
- probability - 消息传递算法:失调,收敛性研究,用于不精确的 MPA
- docassemble - 如何在 docassemble / 最佳实践中组织游乐场?
- amazon-web-services - 检索 AWS S3 请求指标时收到的空数据点
- angular - Angular 反应式文件选择器需要验证和取消事件
- python - 按 MultiIndex 数据框中每个组的值排序
- selenium - 在前一个范围报告的末尾打印类方法信息之前
- python - 运行代码时出现 opencv cv2 错误
- python - Stack two widgets in a GUI
- asp.net-mvc - 如何获取 RecordID 列表并绑定到 LINQ 中的 Guid 列表