Skip to content

Releases: rspec/rspec-mocks

v2.14.6

20 Feb 16:08
Compare
Choose a tag to compare

2.14.6 / 2014-02-20

full changelog

Bug Fixes:

  • Ensure any_instance method stubs and expectations are torn down regardless of
    expectation failures. (Sam Phippen)

3.0.0.beta2

18 Feb 06:48
Compare
Choose a tag to compare
3.0.0.beta2 Pre-release
Pre-release

3.0.0.beta2 / 2014-02-17

full changelog

Breaking Changes for 3.0.0:

  • Rename RSpec::Mocks::Mock to RSpec::Mocks::Double. (Myron Marston)
  • Change how to integrate rspec-mocks in other test frameworks. You now
    need to include RSpec::Mocks::ExampleMethods in your test context.
    (Myron Marston)
  • Prevent RSpec mocks' doubles and partial doubles from being used outside of
    the per-test lifecycle (e.g. from a before(:all) hook). (Sam Phippen)
  • Remove the host argument of RSpec::Mocks.setup. Instead
    RSpec::Mocks::ExampleMethods should be included directly in the scope where
    RSpec's mocking capabilities are used. (Sam Phippen)
  • Make test doubles raise errors if you attempt to use them after they
    get reset, to help surface issues when you accidentally retain
    references to test doubles and attempt to reuse them in another
    example. (Myron Marston)
  • Remove support for and_return { value } and and_return without arguments. (Yuji Nakayama)

Enhancements:

  • Add receive_message_chain which provides the functionality of the old
    stub_chain for the new allow/expect syntax. Use it like so: allow(...).to receive_message_chain(:foo, :bar, :bazz). (Sam Phippen).
  • Change argument matchers to use === as their primary matching
    protocol, since their semantics mirror that of a case or rescue statement
    (which uses === for matching). (Myron Marston)
  • Add RSpec::Mocks.with_temporary_scope, which allows you to create
    temporary rspec-mocks scopes in arbitrary places (such as a
    before(:all) hook). (Myron Marston)
  • Support keyword arguments when checking arity with verifying doubles.
    (Xavier Shay)

Bug Fixes:

  • Fix regression in 3.0.0.beta1 that caused double("string_name" => :value)
    to stop working. (Xavier Shay)
  • Fix the way rspec-mocks and rspec-core interact so that if users
    define a let with the same name as one of the methods
    from RSpec::Mocks::ArgumentMatchers, the user's let takes
    precedence. (Michi Huber, Myron Marston)
  • Fix verified doubles so that their methods match the visibility
    (public, protected or private) of the interface they verify
    against. (Myron Marston)
  • Fix verified null object doubles so that they do not wrongly
    report that they respond to anything. They only respond to methods
    available on the interface they verify against. (Myron Marston)
  • Fix deprecation warning for use of old :should syntax w/o explicit
    config so that it no longer is silenced by an extension gem such
    as rspec-rails when it calls config.add_stub_and_should_receive_to.
    (Sam Phippen)
  • Fix expect syntax so that it does not wrongly emit a "You're
    overriding a previous implementation for this stub" warning when
    you are not actually doing that. (Myron Marston)
  • Fix any_instance.unstub when used on sub classes for whom the super
    class has had any_instance.stub invoked on. (Jon Rowe)
  • Fix regression in stub_chain/receive_message_chain that caused
    it to raise an ArgumentError when passing args to the stubbed
    methods. (Sam Phippen)
  • Correct stub of undefined parent modules all the way down when stubbing a
    nested constant. (Xavier Shay)
  • Raise VerifyingDoubleNotDefinedError when a constant is not defined for
    a verifying class double. (Maurício Linhares)
  • Remove Double#to_str, which caused confusing raise some_double
    behavior. (Maurício Linhares)

2.99.0.beta2

18 Feb 06:49
Compare
Choose a tag to compare
2.99.0.beta2 Pre-release
Pre-release

2.99.0.beta2 / 2014-02-17

full changelog

Deprecations:

  • Deprecate RSpec::Mocks::Mock in favor of RSpec::Mocks::Double.
    (Myron Marston)
  • Deprecate the host argument of RSpec::Mocks.setup. Instead
    RSpec::Mocks::ExampleMethods should be included directly in the scope where
    RSpec's mocking capabilities are used. (Sam Phippen)
  • Deprecate using any of rspec-mocks' features outside the per-test
    lifecycle (e.g. from a before(:all) hook). (Myron Marston)
  • Deprecate re-using a test double in another example. (Myron Marston)
  • Deprecate and_return { value } and and_return without arguments. (Yuji Nakayama)

2.14.5

01 Feb 17:23
Compare
Choose a tag to compare

2.14.5 / 2014-02-01

full changelog

Bug Fixes:

  • Fix regression that caused block implementations to not receive all
    args on 1.8.7 if the block also receives a block, due to Proc#arity
    reporting 1 no matter how many args the block receives if it
    receives a block, too. (Myron Marston)

3.0.0.beta1

08 Nov 04:54
Compare
Choose a tag to compare
3.0.0.beta1 Pre-release
Pre-release

3.0.0.beta1 / 2013-11-07

full changelog

Breaking Changes for 3.0.0:

  • Raise an explicit error if should_not_receive(...).and_return is used. (Sam
    Phippen)
  • Remove 1.8.6 workarounds. (Jon Rowe)
  • Remove stub! and unstub!. (Sam Phippen)
  • Remove mock(name, methods) and stub(name, methods), leaving
    double(name, methods) for creating test doubles. (Sam Phippen, Michi Huber)
  • Remove any_number_of_times since should_receive(:msg).any_number_of_times
    is really a stub in a mock's clothing. (Sam Phippen)
  • Remove support for re-using the same null-object test double in multiple
    examples. Test doubles are designed to only live for one example.
    (Myron Marston)
  • Make at_least(0) raise an error. (Sam Phippen)
  • Remove support for require 'spec/mocks' which had been kept
    in place for backwards compatibility with RSpec 1. (Myron Marston)
  • Blocks provided to with are always used as implementation. (Xavier Shay)
  • The config option (added in 2.99) to yield the receiver to
    any_instance implementation blocks now defaults to "on". (Sam Phippen)

Enhancements:

  • Allow the have_received matcher to use a block to set further expectations
    on arguments. (Tim Cowlishaw)
  • Provide instance_double and class_double to create verifying doubles,
    ported from rspec-fire. (Xavier Shay)
  • as_null_object on a verifying double only responds to defined methods.
    (Xavier Shay)
  • Provide object_double to create verified doubles of specific object
    instances. (Xavier Shay)
  • Provide 'verify_partial_doublesconfiguration that providesobject_double`
    like verification behaviour on partial mocks. (Xavier Shay)
  • Improved performance of double creation, particularly those with many
    attributes. (Xavier Shay)
  • Default value of transfer_nested_constants option for constant stubbing can
    be configured. (Xavier Shay)
  • Messages can be allowed or expected on in bulk via
    receive_messages(:message => :value). (Jon Rowe)
  • allow(Klass.any_instance) and expect(Klass.any_instance) now print a
    warning. This is usually a mistake, and users usually want
    allow_any_instance_of or expect_any_instance_of instead. (Sam Phippen)
  • instance_double and class_double raise ArgumentError if the underlying
    module is loaded and the arity of the method being invoked does not match the
    arity of the method as it is actually implemented. (Andy Lindeman)
  • Spies can now check their invocation ordering is correct. (Jon Rowe)

Deprecations:

  • Using the old :should syntax without explicitly configuring it
    is disabled. It will continue to work but will emit a deprecation
    warning in RSpec 3 if you do not explicitly enable it. (Sam Phippen)

Bug Fixes:

  • Fix and_call_original to handle a complex edge case involving
    singleton class ancestors. (Marc-André Lafortune, Myron Marston)
  • When generating an error message for unexpected arguments,
    use #inspect rather than #description if #description
    returns nil or '' so that you still get a useful message.
    (Nick DeLuca)

2.99.0.beta1

08 Nov 04:54
Compare
Choose a tag to compare
2.99.0.beta1 Pre-release
Pre-release

2.99.0.beta1 / 2013-11-07

full changelog

Deprecations

  • Expecting to use lambdas or other strong arity implementations for stub
    methods with mis-matched arity is deprecated and support for them will be
    removed in 3.0. Either provide the right amount of arguments or use a weak
    arity implementation (methods with splats or procs). (Jon Rowe)
  • Using the same test double instance in multiple examples is deprecated. Test
    doubles are only meant to live for one example. The mocks and stubs have
    always been reset between examples; however, in 2.x the as_null_object
    state was not reset and some users relied on this to have a null object
    double that is used for many examples. This behavior will be removed in 3.0.
    (Myron Marston)
  • Print a detailed warning when an any_instance implementation block is used
    when the new yield_receiver_to_any_instance_implementation_blocks config
    option is not explicitly set, as RSpec 3.0 will default to enabling this new
    feature. (Sam Phippen)

Enhancements:

  • Add a config option to yield the receiver to any_instance implementation
    blocks. (Sam Phippen)

2.14.4

16 Oct 06:28
Compare
Choose a tag to compare

2.14.4 / 2013-10-15

full changelog

Bug Fixes:

  • Fix issue where unstubing methods on "any instances" would not
    remove stubs on existing instances (Jon Rowe)
  • Fix issue with receive(:message) do ... end precedence preventing
    the usage of modifications (and_return etc) (Jon Rowe)

2.14.3

09 Aug 06:28
Compare
Choose a tag to compare

2.14.3 / 2013-08-08

full changelog

Bug Fixes:

  • Fix stubbing some instance methods for classes whose hierarchy includes
    a prepended Module (Bradley Schaefer)

2.14.2

09 Aug 06:27
Compare
Choose a tag to compare

2.14.2 / 2013-07-30

full changelog

Bug Fixes:

  • Fix as_null_object doubles so that they return nil from to_ary
    (Jon Rowe).
  • Fix regression in 2.14 that made stub! (with an implicit receiver)
    return a test double rather than stub a method (Myron Marston).

v2.14.1

08 Jul 03:10
Compare
Choose a tag to compare

2.14.1 / 2013-07-07

full changelog

Bug Fixes:

  • Restore double.as_null_object behavior from 2.13 and earlier: a
    double's nullness persisted between examples in earlier examples.
    While this is not an intended use case (test doubles are meant to live
    for only one example), we don't want to break behavior users rely
    on in a minor relase. This will be deprecated in 2.99 and removed
    in 3.0. (Myron Marston)