SyntaxGameServer/RCCService2018/content/LuaPackages/OtterImpl/createSpy.lua

38 lines
727 B
Lua

local function createSpy(inner)
local self = {
callCount = 0,
values = {},
valuesLength = 0,
}
self.value = function(...)
self.callCount = self.callCount + 1
self.values = {...}
self.valuesLength = select("#", ...)
if inner ~= nil then
return inner(...)
end
end
self.assertCalledWith = function(_, ...)
local len = select("#", ...)
assert(self.valuesLength, len, "length of expected values differs from stored values")
for i = 1, len do
local expected = select(i, ...)
assert(self.values[i], expected, "value differs")
end
end
setmetatable(self, {
__index = function(_, key)
error(("%q is not a valid member of spy"):format(key))
end,
})
return self
end
return createSpy