ruby on rails -用RSpec测试Redis事务



我使用WATCH/MULTI/EXEC命令序列来完成Rails应用程序中的事务。我想说明当事务成功和事务失败时应用程序的行为(特别是当观察的密钥在事务期间在另一个会话中修改时)。

具体地说,给出(人为的)例子下面,我怎么可能写一个规范,总是修改testval在Redis,而任意计算正在执行?

def test_watch
  REDIS.watch("testval") do
    val = REDIS.get('testval')
    val += 1000 # arbitrary computation
    REDIS.multi do |m|
      REDIS.set('testval', val)
    end
  end
end

您实际上不需要在另一个会话中修改键'testval',您可以在同一个会话中这样做,您的事务仍然会失败。所以你只需要找到一种方法来注入一个REDIS。如果在watch和multi之间设置('testval', some_value),则事务将失败。

最新更新