have_broadcasted_to
匹配器
have_broadcasted_to
(也称为 broadcast_to
)匹配器用于检查消息是否已广播到给定的流。
背景
给定 action cable 测试可用。
检查流名称
给定 一个名为“spec/models/broadcaster_spec.rb”的文件,其中包含
require "rails_helper"
RSpec.describe "broadcasting" do
it "matches with stream name" do
expect {
ActionCable.server.broadcast(
"notifications", { text: "Hello!" }
)
}.to have_broadcasted_to("notifications")
end
end
当 我运行 rspec spec/models/broadcaster_spec.rb
那么 示例应该全部通过。
检查传递给流的消息
给定 一个名为“spec/models/broadcaster_spec.rb”的文件,其中包含
require "rails_helper"
RSpec.describe "broadcasting" do
it "matches with message" do
expect {
ActionCable.server.broadcast(
"notifications", { text: "Hello!" }
)
}.to have_broadcasted_to("notifications").with(text: 'Hello!')
end
end
当 我运行 rspec spec/models/broadcaster_spec.rb
那么 示例应该全部通过。
检查传递给流的消息是否匹配
给定 一个名为“spec/models/broadcaster_spec.rb”的文件,其中包含
require "rails_helper"
RSpec.describe "broadcasting" do
it "matches with message" do
expect {
ActionCable.server.broadcast(
"notifications", { text: 'Hello!', user_id: 12 }
)
}.to have_broadcasted_to("notifications").with(a_hash_including(text: 'Hello!'))
end
end
当 我运行 rspec spec/models/broadcaster_spec.rb
那么 示例应该全部通过。
使用块检查传递的消息
给定 一个名为“spec/models/broadcaster_spec.rb”的文件,其中包含
require "rails_helper"
RSpec.describe "broadcasting" do
it "matches with message" do
expect {
ActionCable.server.broadcast(
"notifications", { text: 'Hello!', user_id: 12 }
)
}.to have_broadcasted_to("notifications").with { |data|
expect(data['user_id']).to eq 12
}
end
end
当 我运行 rspec spec/models/broadcaster_spec.rb
那么 示例应该全部通过。
使用别名方法
给定 一个名为“spec/models/broadcaster_spec.rb”的文件,其中包含
require "rails_helper"
RSpec.describe "broadcasting" do
it "matches with stream name" do
expect {
ActionCable.server.broadcast(
"notifications", { text: 'Hello!' }
)
}.to broadcast_to("notifications")
end
end
当 我运行 rspec spec/models/broadcaster_spec.rb
那么 示例应该全部通过。
检查广播到记录
给定 一个名为“spec/channels/chat_channel_spec.rb”的文件,其中包含
require "rails_helper"
RSpec.describe ChatChannel, type: :channel do
it "matches with stream name" do
user = User.new(42)
expect {
ChatChannel.broadcast_to(user, text: 'Hi')
}.to have_broadcasted_to(user)
end
end
以及 一个名为“app/models/user.rb”的文件,其中包含
class User < Struct.new(:name)
def to_gid_param
name
end
end
当 我运行 rspec spec/channels/chat_channel_spec.rb
那么 示例应该通过。
检查在非频道规范中广播到记录
给定 一个名为“spec/models/broadcaster_spec.rb”的文件,其中包含
require "rails_helper"
RSpec.describe "broadcasting" do
it "matches with stream name" do
user = User.new(42)
expect {
ChatChannel.broadcast_to(user, text: 'Hi')
}.to broadcast_to(ChatChannel.broadcasting_for(user))
end
end
以及 一个名为“app/models/user.rb”的文件,其中包含
class User < Struct.new(:name)
def to_gid_param
name
end
end
当 我运行 rspec spec/models/broadcaster_spec.rb
那么 示例应该通过。