Rspec 2 config :type types

Aaron picture Aaron · Jun 3, 2011 · Viewed 12.8k times · Source

In my spec_helper.rb I have

config.include Devise::TestHelpers, :type => :controller

so that I can actually test my controllers that require the user to be authenticated. However, the spec for the same class in requests needs to sign in as well or the tests will fail. I've tried

config.include Devise::TestHelpers, :type => :request

but that doesn't work either. I cannot seem to find what type options I can pass into the rspec include or extend methods. I assume :model and :view would be there but the others I'm completely unsure of. What should I be using so my requests spec can pass and is there a list of the different types for :type?

Answer

simeonwillbanks picture simeonwillbanks · Oct 26, 2011

This commit should help clarify the :type option.

https://github.com/rspec/rspec-rails/commit/fc5cdbb603f0e66f9f3d19a0a60a775e124fb218

:type => :request is valid, so I'm unsure why your tests are failing.

Which directory holds your integration tests? Typically, they're located in spec/requests or possibly spec/integration.

You can use another option to specify when to include Devise::TestHelpers; the option is :example_group:

config.include Devise::TestHelpers, :example_group => {
  :file_path => config.escaped_path(%w[spec (requests|integration)])
}

Now, Devise::TestHelpers will be included into example groups whose file is within the specified paths.

Make sure to replace the array member (requests|integration) with the folder name where your integration tests are located.