Railsドキュメント

アクティブジョブ(activejob)

Rails標準のジョブを処理する仕組み

アクティブジョブ(Active Job)とは

Rails標準のジョブを処理する仕組み

指定した個数のジョブが登録されているか確認

説明

指定した個数のジョブが登録されているか確認

使い方

assert_enqueued_jobs(個数, only: 特定のジョブが何回エンキューされた=nil, except: 特定のクラスを除くジョブが何回キューイングされたか=nil, queue: 特定のキューにジョブがエンキューされた回数をアサート=nil, ブロック引数)

指定した個数のジョブが登録されているか確認

assert_enqueued_jobs 0
HelloJob.perform_later('david')
assert_enqueued_jobs 1
HelloJob.perform_later('abdelkader')
assert_enqueued_jobs 2

ブロックで渡す

assert_enqueued_jobs 1 do
  HelloJob.perform_later('cristian')
end

指定したジョブを確認

assert_enqueued_jobs 1, only: LoggingJob do
  LoggingJob.perform_later
  HelloJob.perform_later('jeremy')
end

指定したジョブ以外を確認

assert_enqueued_jobs 1, except: HelloJob do
  LoggingJob.perform_later
  HelloJob.perform_later('jeremy')
end

キューを指定

assert_enqueued_jobs 2, queue: 'default' do
  LoggingJob.perform_later
  HelloJob.perform_later('elfassy')
end

ソースコード

指定した引数でジョブを登録

説明

指定した引数でジョブを登録されているか確認

使い方

assert_enqueued_with(job: ジョブ=nil, args: 引数=nil, at: At=nil, queue: キュー=nil, priority: プライオリティ=nil, ブロック引数)

指定した引数でジョブを登録

MyJob.perform_later(1,2,3)
assert_enqueued_with(job: MyJob, args: [1,2,3], queue: 'low')

ジョブに渡す引数を指定

MyJob.perform_later(foo: 'bar', other_arg: 'No need to check in the test')
assert_enqueued_with(job: MyJob, args: expected_args, queue: 'low')

ブロックで渡す

assert_enqueued_with(job: MyJob, args: [1,2,3], queue: 'low') do
  MyJob.perform_later(1,2,3)
end

ソースコード

ストリームにブロードキャストされたメッセージの数を確認

説明

ストリームにブロードキャストされたメッセージの数を確認

使い方

assert_broadcasts(ストリーム, メッセージ数, ブロック引数)

ブロードキャストされたメッセージの数を確認

assert_broadcasts 'messages', 0
ActionCable.server.broadcast 'messages', { text: 'hello' }
assert_broadcasts 'messages', 1
ActionCable.server.broadcast 'messages', { text: 'world' }
assert_broadcasts 'messages', 2

ブロック指定

assert_broadcasts('messages', 1) do
    ActionCable.server.broadcast 'messages', { text: 'hello' }
end

ソースコード

ストリームにメッセージが送信されていないことを確認

説明

ストリームにメッセージが送信されていないことを確認

使い方

assert_no_broadcasts(ストリーム、ブロック引数)

assert_no_broadcasts 'messages'

ソースコード

指定したメッセージがストリームに送信されているか確認

説明

指定したメッセージがストリームに送信されているか確認

使い方

assert_broadcast_on(ストリーム, メッセージ, ブロック引数)

ストリームに送信されているか確認

ActionCable.server.broadcast 'messages', text: 'hello'
assert_broadcast_on('messages', text: 'hello')

ブロック指定

assert_broadcast_on('messages', text: 'hello') do
  ActionCable.server.broadcast 'messages', text: 'hello'
end

ソースコード

送信されたメールの数が指定された数と一致することを確認

説明

送信されたメールの数が指定された数と一致することを確認

使い方

assert_emails(メール数, ブロック引数)

送信されたメールの数が指定された数と一致することを確認

def test_emails
    assert_emails 0
    ContactMailer.welcome.deliver_now
    assert_emails 1
    ContactMailer.welcome.deliver_now
    assert_emails 2
end

ブロック

def test_emails_again
    assert_emails 1 do
        ContactMailer.welcome.deliver_now
    end
    assert_emails 2 do
        ContactMailer.welcome.deliver_now
        ContactMailer.welcome.deliver_later
    end
end

ソースコード

特定のメールがエンキューされたことを確認

説明

特定のメールがエンキューされたことを確認

使い方

assert_enqueued_email_with(メーラー, メソッド, args: 引数=nil, queue: キュー, ブロック引数)

特定のメールがエンキューされたことを確認

def test_email
    ContactMailer.welcome.deliver_later
    assert_enqueued_email_with ContactMailer, :welcome
end
def test_email_with_arguments
    ContactMailer.welcome("Hello", "Goodbye").deliver_later
    assert_enqueued_email_with ContactMailer, :welcome, args: ["Hello", "Goodbye"]
end

ブロック

def test_email_in_block
    assert_enqueued_email_with ContactMailer, :welcome do
        ContactMailer.welcome.deliver_later
    end
end

ソースコード

メールキューの数を確認

説明

後で配信するために保留されているメールの数を確認

使い方

assert_enqueued_emails(メール数, ブロック引数)

後で配信するために保留されているメールの数を確認

def test_emails
    assert_enqueued_emails 0
    ContactMailer.welcome.deliver_later
    assert_enqueued_emails 1
    ContactMailer.welcome.deliver_later
    assert_enqueued_emails 2
end

ブロック

def test_emails_again
    assert_enqueued_emails 1 do
        ContactMailer.welcome.deliver_later
    end
    assert_enqueued_emails 2 do
        ContactMailer.welcome.deliver_later
        ContactMailer.welcome.deliver_later
    end
end

ソースコード

メールが送信されていないことを確認

説明

メールが送信されていないことを確認

使い方

assert_no_emails(ブロック引数)

メールが送信されていないことを確認

assert_no_emails()

ブロック

assert_no_emails do
    # このブロックからはメールを送信してはいけない
end

ソースコード

メールキューがないことを確認

説明

後で配信するために保留されているメールがないことを確認

使い方

assert_no_enqueued_emails(ブロック引数)

後で配信するために保留されているメールがないことを確認

assert_no_enqueued_emails()

ブロック

assert_no_enqueued_emails do
    # このブロックからはメールをエンキューしてはいけない
end

ソースコード

与えられたクラスメソッドが与えられたコンテンツに存在することを確認

説明

与えられたクラスメソッドが与えられたコンテンツに存在することを確認

使い方

assert_class_method(メソッド, コンテンツ, ブロック引数)

assert_migration "db/migrate/create_products.rb" do |migration|
    assert_class_method :up, migration do |up|
        assert_match(/create_table/, up)
    end
end

ソースコード