У меня есть класс, который определяет метод проверки, который, к сожалению, имеет то же имя, которое MiniTest :: Mock использует для проверки метода. Я сталкиваюсь с проблемой скремблирования.Как использовать MiniTest :: Mock, чтобы утверждать, что метод «проверка» был вызван на издеваемом объекте?
У меня есть классы, определенные ниже.
class Reader
def initialize(verifier)
@verifier = verifier
end
def verify(subject)
@verifier.verify(subject)
end
end
class Verifier
def verify(subject)
subject != nil
end
end
У меня есть настройки тестов следующим образом.
class TestReader < MiniTest::Test
def test_reader_when_verification_fails
mock_verifier = MiniTest::Mock.new
mock_verifier.expect :verify, false
reader = Reader.new(mock_verifier)
reader.verify(nil)
# The following verify method ends up being the 'verify' defined on
# Verifier, not on MiniTest::Mock. It blows up because Verifier#verify
# expects an argument.
mock_verifier.verify
end
end
Как обойти это?
Так утверждают возвращает процедурный, вам нужно на самом деле _call_ этого прок, последняя строка должна быть '@ mock_verifier.assert.call' – philomory
Хорошо поймать. Благодарю. Был ложный зеленый цвет. Плохая практика TDD с моей стороны. –