跳至内容 跳至搜索

Action Cable Connection TestCase

单元测试 Action Cable 连接。

用于检查连接的 identified_by 是否正确分配,以及任何不正确的连接请求是否被拒绝。

基本示例

单元测试按以下方式编写

  1. 通过调用 connect 来模拟连接尝试。

  2. 断言状态(例如标识符)已分配。

    class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase def test_connects_with_proper_cookie # 模拟带有 Cookie 的连接请求。 cookies = users(:john).id

    connect
    
    # Assert the connection identifier matches the fixture.
    assert_equal users(:john).id, connection.user.id
    

    end

    def test_rejects_connection_without_proper_cookie assert_reject_connection { connect } end end

connect 使用 paramsheaderssession 和 Rack env 选项接受有关 HTTP 请求的附加信息。

def test_connect_with_headers_and_query_string
  connect params: { user_id: 1 }, headers: { "X-API-TOKEN" => "secret-my" }

  assert_equal "1", connection.user.id
  assert_equal "secret-my", connection.token
end

def test_connect_with_params
  connect params: { user_id: 1 }

  assert_equal "1", connection.user.id
end

您也可以在连接请求之前设置正确的 Cookie

def test_connect_with_cookies
  # Plain cookies:
  cookies["user_id"] = 1

  # Or signed/encrypted:
  # cookies.signed["user_id"] = 1
  # cookies.encrypted["user_id"] = 1

  connect

  assert_equal "1", connection.user_id
end

Connection 自动推断

ActionCable::Connection::TestCase 将根据测试类名称自动推断要测试的连接。如果无法从测试类名称推断出通道,则可以使用 tests 显式设置。

class ConnectionTest < ActionCable::Connection::TestCase
  tests ApplicationCable::Connection
end
命名空间
包含的模块