Module: RSpec::Mocks::Syntax Private
Relationships & Source Files | |
Defined in: | rspec-mocks/lib/rspec/mocks/syntax.rb |
Overview
Provides methods for enabling and disabling the available syntaxes provided by rspec-mocks.
Class Method Summary
-
.default_should_syntax_host
Internal use only
Determines where the methods like #should_receive, and #stub are added.
-
.disable_expect(syntax_host = ::RSpec::Mocks::ExampleMethods)
Internal use only
Disables the expect syntax (‘expect(dbl).to receive`, `allow(dbl).to receive`, etc).
-
.disable_should(syntax_host = default_should_syntax_host)
Internal use only
Disables the should syntax (‘dbl.stub`,
dbl.should_receive
, etc). -
.enable_expect(syntax_host = ::RSpec::Mocks::ExampleMethods)
Internal use only
Enables the expect syntax (‘expect(dbl).to receive`, `allow(dbl).to receive`, etc).
-
.enable_should(syntax_host = default_should_syntax_host)
Internal use only
Enables the should syntax (‘dbl.stub`,
dbl.should_receive
, etc). -
.expect_enabled?(syntax_host = ::RSpec::Mocks::ExampleMethods) ⇒ Boolean
Internal use only
Indicates whether or not the expect syntax is enabled.
-
.should_enabled?(syntax_host = default_should_syntax_host) ⇒ Boolean
Internal use only
Indicates whether or not the should syntax is enabled.
- .warn_about_should! Internal use only
- .warn_unless_should_configured(method_name, replacement = "the new `:expect` syntax or explicitly enable `:should`") Internal use only
Class Method Details
.default_should_syntax_host
Determines where the methods like #should_receive, and #stub are added.
# File 'rspec-mocks/lib/rspec/mocks/syntax.rb', line 181
def self.default_should_syntax_host # JRuby 1.7.4 introduces a regression whereby `defined?(::BasicObject) => nil` # yet `BasicObject` still exists and patching onto ::Object breaks things # e.g. SimpleDelegator expectations won't work # # See: https://github.com/jruby/jruby/issues/814 if defined?(JRUBY_VERSION) && JRUBY_VERSION == '1.7.4' && RUBY_VERSION.to_f > 1.8 return ::BasicObject end # On 1.8.7, Object.ancestors.last == Kernel but # things blow up if we include `RSpec::Mocks::Methods` # into Kernel...not sure why. return Object unless defined?(::BasicObject) # MacRuby has BasicObject but it's not the root class. return Object unless Object.ancestors.last == ::BasicObject ::BasicObject end
.disable_expect(syntax_host = ::RSpec::Mocks::ExampleMethods)
Disables the expect syntax (‘expect(dbl).to receive`, `allow(dbl).to receive`, etc).
# File 'rspec-mocks/lib/rspec/mocks/syntax.rb', line 150
def self.disable_expect(syntax_host=::RSpec::Mocks::ExampleMethods) return unless expect_enabled?(syntax_host) syntax_host.class_exec do undef receive undef undef undef allow undef expect_any_instance_of undef allow_any_instance_of end RSpec::Mocks::ExampleMethods::ExpectHost.class_exec do undef expect end end
.disable_should(syntax_host = default_should_syntax_host)
Disables the should syntax (‘dbl.stub`, dbl.should_receive
, etc).
# File 'rspec-mocks/lib/rspec/mocks/syntax.rb', line 89
def self.disable_should(syntax_host=default_should_syntax_host) return unless should_enabled?(syntax_host) syntax_host.class_exec do undef should_receive undef should_not_receive undef stub undef unstub undef stub_chain undef as_null_object undef null_object? undef end Class.class_exec do undef any_instance end end
.enable_expect(syntax_host = ::RSpec::Mocks::ExampleMethods)
Enables the expect syntax (‘expect(dbl).to receive`, `allow(dbl).to receive`, etc).
# File 'rspec-mocks/lib/rspec/mocks/syntax.rb', line 110
def self.enable_expect(syntax_host=::RSpec::Mocks::ExampleMethods) return if expect_enabled?(syntax_host) syntax_host.class_exec do def receive(method_name, &block) Matchers::Receive.new(method_name, block) end def (, &_block) matcher = Matchers::ReceiveMessages.new( ) matcher.warn_about_block if block_given? matcher end def (*, &block) Matchers::ReceiveMessageChain.new(, &block) end def allow(target) AllowanceTarget.new(target) end def expect_any_instance_of(klass) AnyInstanceExpectationTarget.new(klass) end def allow_any_instance_of(klass) AnyInstanceAllowanceTarget.new(klass) end end RSpec::Mocks::ExampleMethods::ExpectHost.class_exec do def expect(target) ExpectationTarget.new(target) end end end
.enable_should(syntax_host = default_should_syntax_host)
Enables the should syntax (‘dbl.stub`, dbl.should_receive
, etc).
# File 'rspec-mocks/lib/rspec/mocks/syntax.rb', line 26
def self.enable_should(syntax_host=default_should_syntax_host) @warn_about_should = false if syntax_host == default_should_syntax_host return if should_enabled?(syntax_host) syntax_host.class_exec do def should_receive(, opts={}, &block) ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__) ::RSpec::Mocks. (self, , opts, &block) end def should_not_receive(, &block) ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__) ::RSpec::Mocks. (self, , {}, &block).never end def stub(, opts={}, &block) ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__) if ::Hash === .each { |, value| stub( ).and_return value } else ::RSpec::Mocks. (self, , opts, &block) end end def unstub( ) ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__, "`allow(...).to receive(...).and_call_original` or explicitly enable `:should`") ::RSpec::Mocks.space.proxy_for(self).remove_stub( ) end def stub_chain(*chain, &blk) ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__) ::RSpec::Mocks::StubChain.stub_chain_on(self, *chain, &blk) end def as_null_object ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__) @_null_object = true ::RSpec::Mocks.space.proxy_for(self).as_null_object end def null_object? ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__) defined?(@_null_object) end def (, *args, &block) ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__) ::RSpec::Mocks.space.proxy_for(self). (, *args, &block) end unless Class.respond_to? :any_instance Class.class_exec do def any_instance ::RSpec::Mocks::Syntax.warn_unless_should_configured(__method__) ::RSpec::Mocks.space.any_instance_proxy_for(self) end end end end end
.expect_enabled?(syntax_host = ::RSpec::Mocks::ExampleMethods) ⇒ Boolean
Indicates whether or not the expect syntax is enabled.
# File 'rspec-mocks/lib/rspec/mocks/syntax.rb', line 175
def self.expect_enabled?(syntax_host=::RSpec::Mocks::ExampleMethods) syntax_host.method_defined?(:allow) end
.should_enabled?(syntax_host = default_should_syntax_host) ⇒ Boolean
Indicates whether or not the should syntax is enabled.
# File 'rspec-mocks/lib/rspec/mocks/syntax.rb', line 169
def self.should_enabled?(syntax_host=default_should_syntax_host) syntax_host.method_defined?(:should_receive) end
.warn_about_should!
[ GitHub ]# File 'rspec-mocks/lib/rspec/mocks/syntax.rb', line 8
def self.warn_about_should! @warn_about_should = true end
.warn_unless_should_configured(method_name, replacement = "the new `:expect` syntax or explicitly enable `:should`")
[ GitHub ]# File 'rspec-mocks/lib/rspec/mocks/syntax.rb', line 13
def self.warn_unless_should_configured(method_name , replacement="the new `:expect` syntax or explicitly enable `:should`") if @warn_about_should RSpec.deprecate( "Using `#{method_name}` from rspec-mocks' old `:should` syntax without explicitly enabling the syntax", :replacement => replacement ) @warn_about_should = false end end