class RSpec::Matchers::BuiltIn::ChangeDetails
def initialize(matcher_name, receiver=nil, message=nil, &block)
def initialize(matcher_name, receiver=nil, message=nil, &block) if receiver && !message raise( ArgumentError, "`change` requires either an object and message " \ "(`change(obj, :msg)`) or a block (`change { }`). " \ "You passed an object but no message." ) end @matcher_name = matcher_name @receiver = receiver @message = message @value_proc = block # TODO: temporary measure to mute warning of access to an initialized # instance variable when a deprecated implicit block expectation # syntax is used. This may be removed once `fail` is used, and the # matcher never issues this warning. @actual_after = UNDEFINED end