Этот ответ для Теста направляющих, не для rspec...
, Если Вы используете delivery_later
как это:
# app/controllers/users_controller.rb
class UsersController < ApplicationController
…
def create
…
# Yes, Ruby 2.0+ keyword arguments are preferred
UserMailer.welcome_email(user: @user).deliver_later
end
end
можно зарегистрироваться тесте, если электронная почта была добавлена к очереди:
# test/controllers/users_controller_test.rb
require 'test_helper'
class UsersControllerTest < ActionController::TestCase
…
test 'email is enqueued to be delivered later' do
assert_enqueued_jobs 1 do
post :create, {…}
end
end
end
, Если Вы делаете это, хотя, you’ll удивленный провальным тестом, который говорит Вам, assert_enqueued_jobs не определяется, чтобы мы использовали.
Это вызвано тем, что наш тест наследовался ActionController:: TestCase, который, во время записи, не включает ActiveJob:: TestHelper.
, Но мы можем быстро зафиксировать это:
# test/test_helper.rb
class ActionController::TestCase
include ActiveJob::TestHelper
…
end
Ссылка: https://www.engineyard.com/blog/testing-async-emails-rails-42