未验证 提交 f36e298c 编写于 作者: R Rafael Mendonça França

Merge pull request #32231 from gmcgibbon/perform_email_jobs_in_assert_emails

Perform email jobs in #assert_emails
## Rails 6.0.0.alpha (Unreleased) ## * Perform email jobs in `assert_emails`.
*Gannon McGibbon*
* Rails 6 requires Ruby 2.4.1 or newer. * Rails 6 requires Ruby 2.4.1 or newer.
......
...@@ -14,7 +14,7 @@ module TestHelper ...@@ -14,7 +14,7 @@ module TestHelper
# assert_emails 0 # assert_emails 0
# ContactMailer.welcome.deliver_now # ContactMailer.welcome.deliver_now
# assert_emails 1 # assert_emails 1
# ContactMailer.welcome.deliver_now # ContactMailer.welcome.deliver_later
# assert_emails 2 # assert_emails 2
# end # end
# #
...@@ -28,17 +28,19 @@ module TestHelper ...@@ -28,17 +28,19 @@ module TestHelper
# #
# assert_emails 2 do # assert_emails 2 do
# ContactMailer.welcome.deliver_now # ContactMailer.welcome.deliver_now
# ContactMailer.welcome.deliver_now # ContactMailer.welcome.deliver_later
# end # end
# end # end
def assert_emails(number) def assert_emails(number, &block)
if block_given? if block_given?
original_count = ActionMailer::Base.deliveries.size original_count = ActionMailer::Base.deliveries.size
yield perform_enqueued_jobs(only: [ActionMailer::DeliveryJob, ActionMailer::Parameterized::DeliveryJob], &block)
new_count = ActionMailer::Base.deliveries.size new_count = ActionMailer::Base.deliveries.size
assert_equal number, new_count - original_count, "#{number} emails expected, but #{new_count - original_count} were sent" assert_equal number, new_count - original_count, "#{number} emails expected, but #{new_count - original_count} were sent"
else else
assert_equal number, ActionMailer::Base.deliveries.size perform_enqueued_jobs(only: [ActionMailer::DeliveryJob, ActionMailer::Parameterized::DeliveryJob]) do
assert_equal number, ActionMailer::Base.deliveries.size
end
end end
end end
......
...@@ -69,6 +69,16 @@ def test_assert_emails ...@@ -69,6 +69,16 @@ def test_assert_emails
end end
end end
def test_assert_emails_with_enqueued_emails
assert_nothing_raised do
assert_emails 1 do
silence_stream($stdout) do
TestHelperMailer.test.deliver_later
end
end
end
end
def test_repeated_assert_emails_calls def test_repeated_assert_emails_calls
assert_nothing_raised do assert_nothing_raised do
assert_emails 1 do assert_emails 1 do
...@@ -105,6 +115,18 @@ def test_assert_no_emails ...@@ -105,6 +115,18 @@ def test_assert_no_emails
end end
end end
def test_assert_no_emails_with_enqueued_emails
error = assert_raise ActiveSupport::TestCase::Assertion do
assert_no_emails do
silence_stream($stdout) do
TestHelperMailer.test.deliver_later
end
end
end
assert_match(/0 .* but 1/, error.message)
end
def test_assert_emails_too_few_sent def test_assert_emails_too_few_sent
error = assert_raise ActiveSupport::TestCase::Assertion do error = assert_raise ActiveSupport::TestCase::Assertion do
assert_emails 2 do assert_emails 2 do
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册