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) ⇒ Object
Add a temporary stubbed method replacing
namefor 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) ⇒ 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.
253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 |
# File 'lib/minitest/mock.rb', line 253 def stub name, val_or_callable, *block_args, **block_kwargs 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 yield self ensure .send :undef_method, name .send :alias_method, name, new_name .send :undef_method, new_name end |