首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在最小范围内模拟和验证ActionCable传输?

如何在最小范围内模拟和验证ActionCable传输?
EN

Stack Overflow用户
提问于 2018-04-20 15:16:02
回答 2查看 988关注 0票数 11

我在ActionCable中使用Rails 5.1。我想使用minitest来测试一个特定的方法,并模拟"ActionCable.server.broadcast“调用来验证我正在发送正确的数据

代码语言:javascript
运行
复制
module MyModule
  class Scanner

    def trasmit
    ...
        ActionCable.server.broadcast "my_channel", data: msg_data

但我不知道如何在我的最弱类中验证ActionCable是否广播了正确的消息数据。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-04-24 15:37:06

Rails ActionCable源已经经过了足够好的测试,以确保其工作正常,所以我们知道,如果我们使用正确的参数调用ActionCable,广播就可以工作。

如果您有一个套接字很重的应用程序,我建议您尝试一下动作电缆试验,它有大量的助手来验证ActionCable是否真的广播了一些东西。

您可以检查您的方法是否向特定频道广播X次:

代码语言:javascript
运行
复制
class ScannerTest < ActionDispatch::IntegrationTest
    include ActionCable::TestHelper

    def test_my_broadcaster
       channel_name = 'my_channel'
       assert_broadcasts channel_name, 0

       # run your method (e.g. trasmit)
       assert_broadcasts channel_name, 1
    end
end

或验证预期数据是否已发送到通道:

代码语言:javascript
运行
复制
class ScannerTest < ActionDispatch::IntegrationTest
    include ActionCable::TestHelper

    def test_my_broadcaster
       channel_name = 'my_channel'
       expected_data = { :hello => "world" }
       assert_broadcast_on(channel_name, data: expected_data) do
          # run your trasmit method here which should call:
          ActionCable.server.broadcast channel_name, data: expected_data 
       end
    end
end

这个Gem可能很快就会成为Rails核心的一部分,因此它肯定值得一看,特别是当您正在测试ActionCable的其他部分时,这迟早会有太多的工作要模拟。(例如,与特定用户登录)。

票数 5
EN

Stack Overflow用户

发布于 2018-04-23 15:14:18

我建议使用模拟(我使用摩卡咖啡 gem来嘲弄)来测试广播。下面是一个简单的例子:

代码语言:javascript
运行
复制
channel_name = 'my_channel'
msg_data = 'hello'

broadcast = mock
server = mock
server.expects(:broadcast).with(channel_name, data: msg_data).returns(broadcast)

ActionCable.expects(:server).returns(server)

通过这种方式,您可以模拟所有ActionCable.server调用,但是正在测试使用正确的参数调用它们。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49944837

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档