DRY in rspec tests

Hi,

I’ve got a lot of rspec controller tests. At the beginning of each controller, I have:

def authenticate … end

def logout … end

Authenticates creates me a @current_user, logout destroys the @current_user. As I said, this code is at the beginning of each controller, not very DRY :slight_smile:

Any hints for me, where to put this code and how to integrate it in my tests, to not always rewrite this two methods?

Regards sewid

I've got a lot of rspec controller tests. At the beginning of each controller, I have:

def authenticate ... end

def logout ... end

Authenticates creates me a @current_user, logout destroys the @current_user. As I said, this code is at the beginning of each controller, not very DRY :slight_smile:

Any hints for me, where to put this code and how to integrate it in my tests, to not always rewrite this two methods?

You could create a file in spec/support/current_user.rb (or whatever, doesn't matter as long as it's in spec/support/*.rb) and put them in there. Then they'll be available to all your specs...

You can include helper modules in your spec_helper file:

  RSpec.configure do |config|    config.include MySpec::SessionsHelper, :type => :controller, :example_group => {      :file_path => config.escaped_path(%w[spec controllers])    }   end

This will include the MySpec::SessionsHelper in all of your controller tests automatically. Then you just have to define your module in the spec/support folder (which should be loaded by RSpec automatically if you're using the RSpec generated spec_helper file.)

# spec/support/sessions_helper.rb module MySpec   module SessionsHelper     def authenticate ...     def logout ...   end end

S. Widmann wrote in post #981233:

I will try that, thanks!