Friday, 15 June 2012

ruby on rails - Testing controller with rspec 3 gives "@routes is nil" -



ruby on rails - Testing controller with rspec 3 gives "@routes is nil" -

after upgrade rails app utilize rspec 3, controllers tests broke. missing in rails_helper.rb?

rails_helper.rb

env["rails_env"] ||= 'test' require 'spec_helper' require file.expand_path("../../config/environment", __file__) require 'rspec/rails' dir[rails.root.join("spec/support/**/*.rb")].each { |file| require file } dir[rails.root.join("spec/factories/*.rb")].each { |file| require file } activerecord::migration.check_pending! if defined?(activerecord::migration) rspec.configure |config| config.fixture_path = "#{::rails.root}/spec/fixtures" config.use_transactional_fixtures = true config.infer_base_class_for_anonymous_controllers = false config.order = "random" config.include applicationhelper config.include factorygirl::syntax::methods config.include actioncontroller::testcase::behavior config.include devise::testhelpers, type: :controller config.extend controllermacros, type: :controller config.include(mailermacros) config.before(:each) { reset_email } end

users_controller_spec.eb

require 'rails_helper' describe userscontroller describe 'has_user' let(:student) { factorygirl.create(:student) } 'not succeeds password' :has_user, { password: 123 } expect(response).to have_http_status(:unprocessable_entity) end end end

failures:

1) userscontroller has_user not succeeds password failure/error: :has_user, { password: 123 } runtimeerror: @routes nil: create sure set in test's setup method. # ./spec/controllers/users_controller_spec.rb:10:in `block (3 levels) in <top (required)>'

thanks!

well, missing line within rails_helper.rb documented here

config.infer_spec_type_from_file_location!

ruby-on-rails rspec rspec3

No comments:

Post a Comment