class ActionCable::Connection::TestCase
Action Cable TestCase
Модульное тестирование подключений Action Cable.
Полезно для проверки правильного назначения identified_by подключения и отклонения некорректных запросов на подключение.
Простой пример
Модульные тесты пишутся так: сначала имитируется попытка подключения вызовом connect, а затем проверяется, например, что были назначены идентификаторы.
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, 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
Перед запросом на подключение также можно настроить нужные файлы 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–2021 David Heinemeier Hansson
Licensed under the MIT License.