класс ActionCable::Connection::TestCase
Action Cable TestCase
Единые тесты подключений Action Cable.
Полезно для проверки того, что identified_by подключения правильно назначается и что любые некорректные запросы подключения отклоняются.
Базовый пример
Единые тесты пишутся следующим образом:
-
Имитируйте попытку подключения, вызвав
connect. -
Проверьте состояние, например, идентификаторы, были назначены.
class ApplicationCable::ConnectionTest <
ActionCable::Connection::TestCasedef test_connects_with_proper_cookie # Имитируйте запрос подключения с cookie. cookies = users(:john).idconnect # 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, headers, session, и параметрами 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
Вы также можете настроить правильные cookies перед запросом подключения:
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–2021 David Heinemeier Hansson
Licensed under the MIT License.