首页 > 解决方案 > rspec:如何测试 redis 发布

问题描述

我正在使用“实时”gem 来获取实时消息。

给定类似的东西(来自官方网站的代码)

# if using redis:
$redis.publish 'realtime_msg', {msg: 'hello world - ' + SecureRandom.hex, recipient_user_ids: [41, 42]}.to_json

如何使用 rspec 测试此代码?

标签: ruby-on-railsruby-on-rails-5rspec3

解决方案


您可以添加一个间谍来$redis断言publish使用某些参数调用它,如下所示:

expect($redis).to receive(:publish).with('realtime_msg', /hello world/)`

最后一部分/hello world.*recipient_user_ids/只是一个正则表达式示例,您可以使用它来匹配您作为第二个参数提供的 JSON 字符串publish。您可以在那里使用自定义匹配器或任何其他符合您目的的 rspec 参数匹配器。


推荐阅读