Spec-Zone.ru › Ruby on Rails 6.0

класс ActionCable::Connection::TestCase

Родитель:
ActiveSupport::TestCase
Включенные модули:
ActionCable::Connection::TestCase::Behavior

Единый тест подключений Action Cable.

Полезно для проверки того, что identified_by подключения назначены должным образом, и что все неправильные запросы на подключение отклоняются.

Пример использования

Единые тесты пишутся следующим образом:

  1. Имитировать попытку подключения, вызвав connect.

  2. Проверить, были ли назначены состояния, например, идентификаторы.

class ApplicationCable::ConnectionTest < ActionCable::Connection::TestCase
  def test_connects_with_proper_cookie
    # Simulate the connection request with a cookie.
    cookies["user_id"] = 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 принимает дополнительную информацию о запросе HTTP с params, session, headers и параметрами Rack env.

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

Подключение автоматически определяется

ActionCable::Connection::TestCase автоматически определит подключение, которое подлежит тестированию, по имени класса теста. Если канал нельзя определить по имени класса теста, вы можете явно задать его с помощью tests.

class ConnectionTest < ActionCable::Connection::TestCase
  tests ApplicationCable::Connection
end

© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API