Class: Object
- Inherits:
- BasicObject
- Includes:
- Minitest::Expectations
- Defined in:
- lib/minitest/mock.rb,
lib/minitest/spec.rb
Overview
:nodoc:
Instance Method Summary collapse
-
#stub(name, val_or_callable, *block_args, **block_kwargs, &block) ⇒ Object
Add a temporary stubbed method replacing
name
for the duration of theblock
.
Methods included from Minitest::Expectations
#assert_empty, #assert_equal, #assert_in_delta, #assert_in_epsilon, #assert_includes, #assert_instance_of, #assert_kind_of, #assert_match, #assert_nil, #assert_operator, #assert_output, #assert_path_exists, #assert_raises, #assert_respond_to, #assert_same, #assert_silent, #assert_throws, #refute_empty, #refute_equal, #refute_in_delta, #refute_in_epsilon, #refute_includes, #refute_instance_of, #refute_kind_of, #refute_match, #refute_nil, #refute_operator, #refute_path_exists, #refute_respond_to, #refute_same
Instance Method Details
#stub(name, val_or_callable, *block_args, **block_kwargs, &block) ⇒ Object
Add a temporary stubbed method replacing name
for the duration of the block
. If val_or_callable
responds to #call, then it returns the result of calling it, otherwise returns the value as-is. If stubbed method yields a block, block_args
will be passed along. Cleans up the stub at the end of the block
. The method name
must exist before stubbing.
def test_stale_eh
obj_under_test = Something.new
refute obj_under_test.stale?
Time.stub :now, Time.at(0) do
assert obj_under_test.stale?
end
end
– NOTE: keyword args in callables are NOT checked for correctness against the existing method. Too many edge cases to be worth it.
270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 |
# File 'lib/minitest/mock.rb', line 270 def stub name, val_or_callable, *block_args, **block_kwargs, &block new_name = "__minitest_stub__#{name}" = class << self; self; end if respond_to? name and not methods.map(&:to_s).include? name.to_s then .send :define_method, name do |*args, **kwargs| super(*args, **kwargs) end end .send :alias_method, new_name, name .send :define_method, name do |*args, **kwargs, &blk| if val_or_callable.respond_to? :call then if kwargs.empty? then # FIX: drop this after 2.7 dead val_or_callable.call(*args, &blk) else val_or_callable.call(*args, **kwargs, &blk) end else if blk then if block_kwargs.empty? then # FIX: drop this after 2.7 dead blk.call(*block_args) else blk.call(*block_args, **block_kwargs) end end val_or_callable end end block[self] ensure .send :undef_method, name .send :alias_method, name, new_name .send :undef_method, new_name end |