"Cannot autoload constants" using rspec but not rails

I have this file that I would like to check.

app/workers/station/http.rb

module Worker
  module Station
    class HTTP
      # ...
    end
  end
end

This is my spec file.

spec/workers/station/http_spec.rb

describe Worker::Station::HTTP do
  it "should do something"  do
  end 
end

Now the problem is that I get the following error when running the spec file using rspec.

rspec spec/workers/station/http_spec.rb

/Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:464:in `load_missing_constant': Unable to autoload constant Station::HTTP, expected app/workers/station/http.rb to define it (LoadError)
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:184:in `const_missing'
  from spec/workers/station/http_spec.rb:3:in `<top (required)>'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:223:in `load'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:223:in `block in load'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:214:in `load_dependency'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.4/lib/active_support/dependencies.rb:223:in `load'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `block in load_spec_files'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `each'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/configuration.rb:896:in `load_spec_files'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/command_line.rb:22:in `run'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/runner.rb:80:in `run'
  from /Users/linus/.rvm/gems/ruby-2.0.0-p247@global/gems/rspec-core-2.14.8/lib/rspec/core/runner.rb:17:in `block in autorun'
  from /Users/linus/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'
  from /Users/linus/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:55:in `require'

The strange thing is that everyting is running on the console.

$ rails c [1] pry(main)> Worker::Station::HTTP => Worker::Station::HTTP

Why is this happening using rspec and not on rails and how can I fix it?

I use

  • rails (4.0.4)
  • rspec (2.14.1)
+4
source share
2 answers

The path app/workersdoes not start rspec, since it is not a standard rail layout, you can add an autoload line to your spec_helper or directly request the file in the specification!

0

jfornoff, require , :

require "app/workers/station/http"

Spring Rails, , , Spring. Spring :

bundle exec rspec spec/workers/station/http_spec.rb

... ...

spring stop # or bin/spring stop
rspec spec/workers/station/http_spec.rb
0

Source: https://habr.com/ru/post/1536456/


All Articles