Sha256: f90d9ce764c3309f1cb6e867524d30e7bfd5ec5e059ce31af3d922f7df6a9ead
Contents?: true
Size: 1.37 KB
Versions: 7
Compression:
Stored size: 1.37 KB
Contents
module RR module Expectations class TimesCalledExpectation attr_reader :matcher, :times_called def initialize(matcher=nil, &time_condition_block) raise ArgumentError, "Cannot pass in both an argument and a block" if matcher && time_condition_block matcher_value = matcher || time_condition_block @matcher = TimesCalledMatchers::TimesCalledMatcher.create(matcher_value) @times_called = 0 @verify_backtrace = caller[1..-1] end def attempt? @matcher.attempt?(@times_called) end def attempt! @times_called += 1 verify_input_error unless @matcher.possible_match?(@times_called) return end def verify return false unless @matcher.is_a?(TimesCalledMatchers::TimesCalledMatcher) return @matcher.matches?(@times_called) end def verify! unless verify if @verify_backtrace error = Errors::TimesCalledError.new(error_message) error.backtrace = @verify_backtrace raise error else raise Errors::TimesCalledError, error_message end end end protected def verify_input_error raise Errors::TimesCalledError, error_message end def error_message @matcher.error_message(@times_called) end end end end
Version data entries
7 entries across 7 versions & 1 rubygems