38 lines
727 B
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 |