Prerequisite Link to heading
Usage Link to heading
# Create a mock
mock = Minitest::Mock.new
# Add expectations.
#
# Arguments:
# 1. Method name
# 2. What to return when called
# 3. Expected inputs
mock.expect(:read!, { result: 1 }, ['first'])
# Now you pass the mock around and execute your tests.
subject = described_class.new(something: mock)
subject.add(:a)
# Verify the expectations were met.
mock.verify
Limitations Link to heading
You can’t mock #respond_to?
for some reason, at least I could not when I tried
it. But it might have been a bug and it works now? Can somebody verify?
Why is this important? You might want to pass a mock to a validator like this one:
def validate_set!(state)
unless state.respond_to?(:[]=)
raise(ArgumentError, 'Given state object does not respond to `:[]=`')
end
arity = state.method(:[]=).arity
unless arity == 2
raise(
ArgumentError,
"Given state object's `:[]=` method arity must be 2, got: #{arity}"
)
end
end
Reference Link to heading
Further reading: