URL helpers in mailer examples

Mailer specs are marked by type: :mailer or if you have set config.infer_spec_type_from_file_location! by placing them in spec/mailers.

Using URL helpers with default options

Given a file named “config/initializers/mailer_defaults.rb” with:

Rails.configuration.action_mailer.default_url_options = { :host => 'example.com' }

And a file named “spec/mailers/notifications_spec.rb” with:

require 'rails_helper'

RSpec.describe NotificationsMailer, type: :mailer do
  it 'should have access to URL helpers' do
    expect { gadgets_url }.not_to raise_error
  end
end

When I run rspec spec

Then the examples should all pass.

Using URL helpers without default options

Given a file named “config/initializers/mailer_defaults.rb” with:

# no default options

And a file named “spec/mailers/notifications_spec.rb” with:

require 'rails_helper'

RSpec.describe NotificationsMailer, type: :mailer do
  it 'should have access to URL helpers' do
    expect { gadgets_url :host => 'example.com' }.not_to raise_error
    expect { gadgets_url }.to raise_error
  end
end

When I run rspec spec

Then the examples should all pass.