delner / rspec-hollerback-mocks

RSpec mocks for the Hollerback gem.
MIT License
1 stars 0 forks source link

RSpec can't find and_callback matcher? #1

Open alassek opened 7 years ago

alassek commented 7 years ago

Am I missing something obvious here?

I've added gem 'rspec-hollerback-mocks' to my Gemfile test group, and added require 'rspec/hollerback/mocks' to my spec_helper.rb.

Writing an expectation like this:

expect_any_instance_of(MyClass).to receive(:method).and_callback(:foo, value)

results in an error:

undefined method `and_callback' for #<RSpec::Mocks::AnyInstance::PositiveExpectationChain:0x007fccc9de8d28>

Ruby: 2.3.3 Rails: 5.0.0.1 RSpec: 3.5.0

delner commented 7 years ago

Thanks for the report! Is there any relevant stack trace you can provide?

alassek commented 7 years ago

Here's the stacktrace up to my spec file

/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/proxy.rb:110:in `block in method_missing'
/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/proxy.rb:110:in `map'
/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/any_instance/proxy.rb:110:in `method_missing'
/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/expectation_customization.rb:15:in `playback_onto'
/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive.rb:101:in `block in setup_method_substitute'
/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive.rb:100:in `each'
/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive.rb:100:in `setup_method_substitute'
/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive.rb:91:in `setup_any_instance_method_substitute'
/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/matchers/receive.rb:47:in `setup_any_instance_expectation'
/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/targets.rb:46:in `define_matcher'
/Users/adam/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/rspec-mocks-3.5.0/lib/rspec/mocks/targets.rb:10:in `block in delegate_to'
alassek commented 7 years ago

@delner more detail for you. It seems that

expect(myclass_instance).to receive(:method).and_callback(:foo, value)

works as intended. So the problem lies specifically with expect_any_instance_of and allow_any_instance_of.

delner commented 7 years ago

Ah, that might make sense. I may not have implemented expect_any_instance_of and allow_any_instance_of. I'll make some plans to add support for this, if possible.