Test Modules in Minitest
In order to test an uncoupled module you should extend the singleton class of an Object
.
class MyClassTest < Minitest::Test
def setup
@test_object = Object.new
@test_object.extend(Mixable) # has a 'mix?' method
end
def test_mixes_correctly
assert @test_object.mix?
end
end
When it comes to coupled modules –those that depend on the implementation of a particular method– the best thing to do in order to show how it could be implemented is to use a dummy object.
class DummyObject
include OtherMixable # its 'mix' method depends on 'necessary_method'
def necessary_method
# your sample implementation
end
end
class MyClassTest < Minitest::Test
def test_my_object_mixes
my_object = DummyObject.new
assert my_object.mix
end
end
Whenever you test a class that includes or extends a module you only need to test the implementation of the method it depends on. Other unit tests, as well as integration tests, should warn you if a module hasn’t been called correctly.