我正在尝试运行一个 redis lua 模拟项目来测试我的 redis lua 代码。但显然,redis-mock 项目中存在错误。
当我调用我的测试代码时,redis 模拟在hash.lua#22redis.call('hget', 'foo', 'bar')
处抛出一个断言错误,这是从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'
和 the k2
is 实际上nil
,我该如何修复这个错误,k
应该是foo
,k2
应该是'bar'