Spec-Zone.ru › Ruby on Rails 7.2

модуль ActionCable::Channel::TestCase::Behavior

Включенные модули:
ActiveSupport::Testing::ConstantLookup, ActionCable::TestHelper

Константы

CHANNEL_IDENTIFIER

Атрибуты

connection[R]
subscription[R]

Общедоступные методы экземпляров

assert_broadcast_on(stream_or_object, *args) Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 282
def assert_broadcast_on(stream_or_object, *args)
  super(broadcasting_for(stream_or_object), *args)
end
Вызов метода суперкласса ActionCable::TestHelper#assert_broadcast_on
assert_broadcasts(stream_or_object, *args) Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 278
def assert_broadcasts(stream_or_object, *args)
  super(broadcasting_for(stream_or_object), *args)
end

Расширение утверждений TestHelper для обработки нестроковых трансляций

Вызов метода суперкласса ActionCable::TestHelper#assert_broadcasts
assert_has_no_stream(stream) Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 326
def assert_has_no_stream(stream)
  assert subscription.streams.exclude?(stream), "Stream #{stream} has been started"
end

Утверждает, что указанный поток не был запущен.

def test_assert_no_started_stream
  subscribe
  assert_has_no_stream 'messages'
end
assert_has_no_stream_for(object) Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 337
def assert_has_no_stream_for(object)
  assert_has_no_stream(broadcasting_for(object))
end

Утверждает, что указанный поток для модели не был запущен.

def test_assert_no_started_stream_for
  subscribe id: 41
  assert_has_no_stream_for User.find(42)
end
assert_has_stream(stream) Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 304
def assert_has_stream(stream)
  assert subscription.streams.include?(stream), "Stream #{stream} has not been started"
end

Утверждает, что указанный поток был запущен.

def test_assert_started_stream
  subscribe
  assert_has_stream 'messages'
end
assert_has_stream_for(object) Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 315
def assert_has_stream_for(object)
  assert_has_stream(broadcasting_for(object))
end

Утверждает, что указанный поток для модели был запущен.

def test_assert_started_stream_for
  subscribe id: 42
  assert_has_stream_for User.find(42)
end
assert_no_streams() Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 293
def assert_no_streams
  assert subscription.streams.empty?, "No streams started was expected, but #{subscription.streams.count} found"
end

Утверждает, что потоки не были запущены.

def test_assert_no_started_stream
  subscribe
  assert_no_streams
end
perform(action, data = {}) Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 266
def perform(action, data = {})
  check_subscribed!
  subscription.perform_action(data.stringify_keys.merge("action" => action.to_s))
end

Выполнение действия на канале.

ПРИМЕЧАНИЕ: Требуется подписка.

stub_connection(identifiers = {}) Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 243
def stub_connection(identifiers = {})
  @connection = ConnectionStub.new(identifiers)
end

Настройка тестового подключения со следующими идентификаторами:

class ApplicationCable < ActionCable::Connection::Base
  identified_by :user, :token
end

stub_connection(user: users[:john], token: 'my-secret-token')
subscribe(params = {}) Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 249
def subscribe(params = {})
  @connection ||= stub_connection
  @subscription = self.class.channel_class.new(connection, CHANNEL_IDENTIFIER, params.with_indifferent_access)
  @subscription.singleton_class.include(ChannelStub)
  @subscription.subscribe_to_channel
  @subscription
end

Подписка на канал, который тестируется. Дополнительные параметры подписки можно передать в виде Hash.

transmissions() Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 272
def transmissions
  # Return only directly sent message (via #transmit)
  connection.transmissions.filter_map { |data| data["message"] }
end

Возвращает сообщения, переданные в канал

unsubscribe() Показать исходный код
# File actioncable/lib/action_cable/channel/test_case.rb, line 258
def unsubscribe
  check_subscribed!
  subscription.unsubscribe_from_channel
end

Отмена подписки на канал, который тестируется.

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

Spec-Zone.ru

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