2013-10-24 2 views
1

Я создал этот модуль: поддержка/mailer_macros.rbнедопустимый метод при включении модуля в ActiveSupport TestCase

module MailerMacros 
    def last_email 
    ActionMailer::Base.deliveries.last 
    end 

    def reset_email 
    ActionMailer::Base.deliveries = [] 
    end 
end 

Я хочу, чтобы получить доступ к нему из моего testhelper, так что я сделал это в тестовом/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 

Но когда я запускаю свои тесты, я получаю ошибку:

undefined local variable or method `reset_email' for ActiveSupport::TestCase:Class 

Что случилось? Благодаря!

ответ

2

Включение модуля означает, что методы модуля доступны как экземпляры методы, а не методы класса. Вы пытаетесь запустить reset_email на уровне класса.

Чтобы это исправить, extend MailerMacros вместо того, чтобы включить его:

class ActiveSupport::TestCase 

    extend MailerMacros 
    reset_email 

end 
+0

я не знаю разницу. Большое спасибо!!! – ndemoreau

Смежные вопросы