Search code examples
ruby-on-railstestingrspecrspec-rails

Issues with spec files load order: in `find_and_eval_shared': Could not find shared examples


I'm currently working through Rails 4 Test Prescriptions and have run into an issue with the load order of my spec files that isn't addressed in the book. And unfortunately, not something I can solve from what I have been able to find on the issue. The output I get when trying to run my tests is

/Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:370:in `find_and_eval_shared': Could not find shared examples "sizeable" (ArgumentError)
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:310:in `block (2 levels) in define_nested_shared_group_method'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:385:in `module_exec'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:385:in `subclass'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:258:in `block in define_example_group_method'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:309:in `block in define_nested_shared_group_method'
    from /Users/Admin/Desktop/Apps/gatherer/spec/models/task_spec.rb:4:in `block in <top (required)>'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:385:in `module_exec'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:385:in `subclass'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/example_group.rb:258:in `block in define_example_group_method'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/dsl.rb:43:in `block in expose_example_group_alias'
    from /Users/Admin/Desktop/Apps/gatherer/spec/models/task_spec.rb:3:in `<top (required)>'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `block in load'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1435:in `block in load_spec_files'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `each'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/configuration.rb:1433:in `load_spec_files'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:100:in `setup'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:86:in `run'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:71:in `run'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/lib/rspec/core/runner.rb:45:in `invoke'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/gems/rspec-core-3.5.4/exe/rspec:4:in `<top (required)>'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/bin/rspec:23:in `load'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/bin/rspec:23:in `<main>'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
    from /Users/Admin/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'

You can see my repo at https://github.com/jamesemcc/gatherer

Thanks for any help!


Solution

  • Load your shared example declaration file size_group.rb in your task_spec.rb

    Like this:

    require 'support/size_group'
    

    Edit:

    Its better load shared_example main example into rails_helper.rb.