Jump to content

Module:Lua-mock

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Mr. Stradivarius (talk | contribs) at 14:43, 1 May 2019 (copy Mock.lua from https://luarocks.org/modules/henry4k/lua-mock; the software is public domain). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

--- @classmod Mock
--- Combination of Spy and ProgrammableFn.
-- See @{Spy} and @{ProgrammableFn} for details.


local ProgrammableFn = require 'test.mock.ProgrammableFn'
local Spy = require 'test.mock.Spy'


local Mock = {}
Mock.__index = Mock


function Mock:whenCalled( behaviour )
    self.programmable:whenCalled(behaviour)
    return self
end

function Mock:__call( ... )
    return self.spy(...)
end

function Mock:reset()
    self.spy:reset()
    self.programmable:reset()
    return self
end

function Mock:assertCallCount( count )
    self.spy:assertCallCount(count)
    return self
end

function Mock:assertCallMatches( query )
    self.spy.assertCallMatches(query)
    return self
end

function Mock:assertAnyCallMatches( query )
    self.spy.assertAnyCallMatches(query)
    return self
end


return function()
    local programmable = ProgrammableFn()
    local spy = Spy(programmable)
    local self = {
        programmable = programmable,
        spy = spy
    }
    return setmetatable(self, Mock)
end