Mock
Mock Object
mock
allows to override a method of an object.
unmock
allows to restore the initial (ie. class) behavior
of a mocked object.
require 'Coat'
class 'Rectangle'
has.x = { is = 'rw', isa = 'number', required = true }
has.y = { is = 'rw', isa = 'number', required = true }
function method:getArea ()
return self.x * self.y
end
require 'Rectangle'
r = Rectangle{ x = 2, y = 4 }
r:mock('getArea', function () return 42 end)
r:unmock 'getArea'
Mock Class
Create mock class could be simply done with override
.
All instances (already created and future) are altered.
It is not possible to restore the initial behavior.
The 3 following syntax are equivalent :
require 'Rectangle'
function Rectangle.override:getArea ()
return 42
end
require 'Rectangle'
Coat.override(Rectangle, 'getArea', function () return 42 end)
require 'Rectangle'
r = Rectangle{ x = 2, y = 4 }
function r.override:getArea ()
return 42
end