redisluaモックプロジェクトを実行してredisluaコードをテストしようとしています。しかし、明らかに、redis-mockプロジェクトにはバグがあります。
テストコードを呼び出すredis.call('hget', 'foo', 'bar')
と、redisモックはhash.lua#22でアサートエラーをスローします。これはRedisLua.lua#20からの呼び出しです。
-- RedisLua.lua
local call = function(self)
return (function(cmd, ...)
cmd = string.lower(cmd)
local arg = {...}
local ret = self.db[cmd](self.db, unpack(arg)) -- line 20
if self.RedisLua_VERBOSE then
print(cmd .. "( " .. table.concat(arg, " ") .. " ) === ".. tostring(ret))
end
return ret
end)
end
-- hash.lua
function RedisDb:hget(self,k,k2)
assert((type(k2) == "string")) -- # line 22
local x = RedisDb.xgetr(self,k,"hash")
return x[k2]
end
トレースした後、私は、self
is 'foo'
、k
is 'bar'
、およびk2
isが実際nil
にあることを発見しました。このバグを修正するにはどうすればよいですか、k
すべきfoo
であり、k2
すべきである'bar'