Sha256: 1df46307b08ecfcc9936ed3f25254f1635e0ca9b90bba953bb8451554a32ce48
Contents?: true
Size: 933 Bytes
Versions: 12
Compression:
Stored size: 933 Bytes
Contents
module Mocktail class ReplacesNext def initialize @top_shelf = TopShelf.instance @redefines_new = RedefinesNew.new @imitates_type = ImitatesType.new end def replace(type, count) raise UnsupportedMocktail.new("Mocktail.of_next() only supports classes") unless type.is_a?(Class) mocktails = count.times.map { @imitates_type.imitate(type) } @top_shelf.register_of_next_replacement!(type) @redefines_new.redefine(type) mocktails.reverse_each do |mocktail| Mocktail.stubs( ignore_extra_args: true, ignore_block: true, ignore_arity: true, times: 1 ) { type.new }.with { if mocktail == mocktails.last @top_shelf.unregister_of_next_replacement!(type) end mocktail } end mocktails.size == 1 ? mocktails.first : mocktails end end end
Version data entries
12 entries across 12 versions & 1 rubygems