Reputation: 3869
I created this module: support/mailer_macros.rb
module MailerMacros
def last_email
ActionMailer::Base.deliveries.last
end
def reset_email
ActionMailer::Base.deliveries = []
end
end
I want to access it from my testhelper, so I did this in test/test_helper.rb:
ENV["RAILS_ENV"] = "test"
require File.expand_path("../../config/environment", __FILE__)
require "rails/test_help"
require "minitest/rails"
#require "capybara/rails"
require "minitest/rails/capybara"
require "support/mailer_macros"
class ActiveSupport::TestCase
include MailerMacros
reset_email
end
But when I run my tests, I get the error:
undefined local variable or method `reset_email' for ActiveSupport::TestCase:Class
What's wrong? Thanks!
Upvotes: 1
Views: 248
Reputation: 11951
Including a module means that the module's methods are available as instance methods, not class methods. You're trying to run reset_email
at the class level.
To fix this, extend MailerMacros
instead of including it:
class ActiveSupport::TestCase
extend MailerMacros
reset_email
end
Upvotes: 2