have_stream_from
マッチャー
have_stream_from
マッチャーは、指定されたストリームにチャンネルが購読されているかどうかを確認するために使用されます。
もしチャンネルで stream_for
を使用してモデルに購読する場合は、代わりに have_stream_for
マッチャーを使用してください。
have_no_streams
マ ッチャーは、チャンネルがどのストリームにも購読されていないかどうかを確認するために使用されます。
このマッチャーは、チャンネルのスペックでのみ利用可能です。
背景
アクションケーブルのテストが利用可能であることが前提です。
かつ、以下の内容で "app/channels/chat_channel.rb" という名前のファイルが存在すること:
class ChatChannel < ApplicationCable::Channel
def subscribed
reject unless params[:room_id].present?
stream_from "chat_#{params[:room_id]}"
end
def leave
stop_all_streams
end
end
パラメータを使用して購読し、ストリームを確認する
以下の内容で "spec/channels/chat_channel_spec.rb" という名前のファイルが存在すること:
require "rails_helper"
RSpec.describe ChatChannel, type: :channel do
it "successfully subscribes" do
subscribe room_id: 42
expect(subscription).to be_confirmed
expect(subscription).to have_stream_from("chat_42")
end
end
rspec spec/channels/chat_channel_spec.rb
を実行すると、
例がパスするはずです。