未验证 提交 9d631114 编写于 作者: A arktisklada 提交者: Jeremy Daer

Clear ActionMailer deliveries on setup and teardown

Signed-off-by: NJeremy Daer <jeremydaer@gmail.com>
上级 9364d506
......@@ -15,10 +15,12 @@ module ClearTestDeliveries
extend ActiveSupport::Concern
included do
setup :clear_test_deliveries
teardown :clear_test_deliveries
end
private
def clear_test_deliveries
if ActionMailer::Base.delivery_method == :test
ActionMailer::Base.deliveries.clear
......@@ -76,6 +78,7 @@ def initialize_test_deliveries # :nodoc:
set_delivery_method :test
@old_perform_deliveries = ActionMailer::Base.perform_deliveries
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.deliveries.clear
end
def restore_test_deliveries # :nodoc:
......@@ -89,6 +92,7 @@ def set_delivery_method(method) # :nodoc:
end
def restore_delivery_method # :nodoc:
ActionMailer::Base.deliveries.clear
ActionMailer::Base.delivery_method = @old_delivery_method
end
......@@ -114,6 +118,5 @@ def read_fixture(action)
end
include Behavior
include ClearTestDeliveries
end
end
......@@ -3,6 +3,44 @@
class TestTestMailer < ActionMailer::Base
end
class ClearTestDeliveriesMixinTest < ActiveSupport::TestCase
include ActionMailer::TestCase::ClearTestDeliveries
def before_setup
ActionMailer::Base.delivery_method, @original_delivery_method = :test, ActionMailer::Base.delivery_method
ActionMailer::Base.deliveries << 'better clear me, setup'
super
end
def after_teardown
super
assert_equal [], ActionMailer::Base.deliveries
ActionMailer::Base.delivery_method = @original_delivery_method
end
def test_deliveries_are_cleared_on_setup_and_teardown
assert_equal [], ActionMailer::Base.deliveries
ActionMailer::Base.deliveries << 'better clear me, teardown'
end
end
class MailerDeliveriesClearingTest < ActionMailer::TestCase
def before_setup
ActionMailer::Base.deliveries << 'better clear me, setup'
super
end
def after_teardown
super
assert_equal [], ActionMailer::Base.deliveries
end
def test_deliveries_are_cleared_on_setup_and_teardown
assert_equal [], ActionMailer::Base.deliveries
ActionMailer::Base.deliveries << 'better clear me, teardown'
end
end
class CrazyNameMailerTest < ActionMailer::TestCase
tests TestTestMailer
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册