Skip to content

Instantly share code, notes, and snippets.

@mrzasa
Last active December 12, 2022 12:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mrzasa/fc6aef6098c76b3f201dad8187f5c18c to your computer and use it in GitHub Desktop.
Save mrzasa/fc6aef6098c76b3f201dad8187f5c18c to your computer and use it in GitHub Desktop.
Failure in RSpec aggregate_failures with mocks

Steps to reproduce

bundle
bundle exec rspec aggregate_failures.rb

Resolving dependencies...
Run options: include {:locations=>{"./multiple-expectations.rb"=>[37]}}
F

/home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/formatters/exception_presenter.rb:402:in `with_truncated_backtrace': undefined method `backtrace' for {:foo=>2}:Hash (NoMethodError)
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/formatters/exception_presenter.rb:376:in `block (2 levels) in sub_failure_list_formatter'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/flat_map.rb:7:in `each'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/flat_map.rb:7:in `each_with_index'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/flat_map.rb:7:in `each'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/flat_map.rb:7:in `flat_map'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/flat_map.rb:7:in `flat_map'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/formatters/exception_presenter.rb:367:in `block in sub_failure_list_formatter'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/formatters/exception_presenter.rb:89:in `fully_formatted_lines'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/formatters/exception_presenter.rb:80:in `fully_formatted'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/notifications.rb:200:in `fully_formatted'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/notifications.rb:114:in `block in fully_formatted_failed_examples'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/notifications.rb:113:in `each'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/notifications.rb:113:in `each_with_index'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/notifications.rb:113:in `fully_formatted_failed_examples'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/formatters/base_text_formatter.rb:32:in `dump_failures'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb:209:in `block in notify'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb:208:in `each'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb:208:in `notify'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb:178:in `block in finish'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb:194:in `close_after'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb:174:in `finish'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/reporter.rb:76:in `report'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/runner.rb:115:in `run_specs'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/runner.rb:89:in `run'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/runner.rb:71:in `run'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/lib/rspec/core/runner.rb:45:in `invoke'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/gems/rspec-core-3.12.0/exe/rspec:4:in `<top (required)>'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/bin/rspec:25:in `load'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/bin/rspec:25:in `<main>'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/bin/ruby_executable_hooks:22:in `eval'
        from /home/mrzasa/.rvm/gems/ruby-3.0.4/bin/ruby_executable_hooks:22:in `<main>'


require 'rspec'
class ArrayFactory
def self.get(size)
Array.new(size)
end
end
def do_foo(bar)
array = ArrayFactory.get(10)
bar.times { array.push({foo: bar}) }
array
end
RSpec.configure do |c|
c.define_derived_metadata do |meta|
meta[:aggregate_failures] = false
end
end
RSpec.describe 'do_foo' do
it 'pushes data' do
aggregate_failures do
allow(ArrayFactory).to receive(:get).with(100) { Array.new }
array = do_foo(2)
allow(ArrayFactory).to have_received(:get).with(100)
expect(array).to include({foo: 9})
end
end
end
# frozen_string_literal: true
source 'https://rubygems.org'
gem 'rspec'
GEM
remote: https://rubygems.org/
specs:
diff-lcs (1.5.0)
rspec (3.12.0)
rspec-core (~> 3.12.0)
rspec-expectations (~> 3.12.0)
rspec-mocks (~> 3.12.0)
rspec-core (3.12.0)
rspec-support (~> 3.12.0)
rspec-expectations (3.12.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-mocks (3.12.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.12.0)
rspec-support (3.12.0)
PLATFORMS
x86_64-linux
DEPENDENCIES
rspec
BUNDLED WITH
2.3.23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment