Mat*_*ins 8 rspec ruby-on-rails mocking stub redis
我正在尝试使用mock_redis gem 为我的 rspec 测试存根 redis 。我的 rspec 配置如下所示:
RSpec.configure do |config|
# ... various rspec config options ...
config.before(:each) do
redis_instance = MockRedis.new
Redis.stub(:new).and_return(redis_instance)
Redis::Store.stub(:new).and_return(redis_instance)
end
end
Run Code Online (Sandbox Code Playgroud)
不幸的是,我仍然看到 get 和 set 被发送到我的实际 redis 实例,如果我杀死 redis,那么我的测试都会失败。我尝试添加断点,并且确实看到此代码块正在正确执行。我还确认,在此before
块的范围内,Redis.new == redis_instance
和Redis::Store.new == redis_instance
都是正确的。
有没有人知道为什么这对我不起作用?我也愿意接受 stubbing/mocking redis 的替代方法。
它看起来像是传递一个块而不是一个值来and_return
使其工作,尽管我不确定为什么。例如:
Redis.stub(:new).and_return { redis_instance }
Redis::Store.stub(:new).and_return { redis_instance }
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6575 次 |
最近记录: |