Mocking a method after stubbing it can trigger an error
Created by: myronmarston
describe "Test Doubles" do
it 'can mock a method after stubbing' do
job = Object.new
reserver = double("reserver")
reserver.stub(:reserve).and_return(job, nil)
reserver.should_receive(:reserve).once { job }
reserver.reserve
end
end
1) Test Doubles can mock a method after stubbing
Failure/Error: reserver.reserve
NoMethodError:
undefined method `size' for #<Object:0x007fd502149068>
# ./lib/rspec/mocks/message_expectation.rb:442:in `call_implementation_consecutive'
# ./lib/rspec/mocks/message_expectation.rb:199:in `invoke'
# ./lib/rspec/mocks/proxy.rb:133:in `message_received'
# ./lib/rspec/mocks/method_double.rb:167:in `reserve'
# ./foo_spec.rb:7:in `block (2 levels) in <top (required)>'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/example.rb:114:in `instance_eval'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/example.rb:114:in `block in run'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/example.rb:254:in `with_around_each_hooks'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/example.rb:111:in `run'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/example_group.rb:386:in `block in run_examples'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/example_group.rb:382:in `map'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/example_group.rb:382:in `run_examples'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/example_group.rb:367:in `run'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/command_line.rb:28:in `block (2 levels) in run'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/command_line.rb:28:in `map'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/command_line.rb:28:in `block in run'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/reporter.rb:34:in `report'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/command_line.rb:25:in `run'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/runner.rb:80:in `run'
# /Users/myron/code/rspec-dev/repos/rspec-core/lib/rspec/core/runner.rb:17:in `block in autorun'