62
задан 4 January 2015 в 10:20

1 ответ

Этот ответ для Теста направляющих, не для 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

0
ответ дан 31 October 2019 в 13:21

Другие вопросы по тегам:

Похожие вопросы: