Как проверить, был ли вызванный метод класса вызван в minitest? - PullRequest
0 голосов
/ 01 мая 2018

Я использую Minitest и Ruby on Rails 5. Как я могу утверждать, что был вызван метод класса void? У меня есть это в моем классе

module WebsocketClient
  class Proxy
    ...
    def self.authenticate(ws)
      auth_str = 'auth_str'
      ws.send auth_str
    end

Тогда в моем файле minitest у меня есть

  # Call the connect method
  WebsocketClient::Proxy.stub(:authenticate) do
    ws_client = WebsocketClient::Proxy.new(stratum_worker)
    ws_client.connect

    msg = WebSocket::Frame::Incoming::Client.new
    msg.data = error_str
    ws_client.websocket.emit :message, msg

    # Somehow verify that authenticate was called.
  end

но я не уверен, как проверить, действительно ли был вызван мой метод "authenticate".

1 Ответ

0 голосов
/ 04 мая 2018

Добавьте Spy драгоценный камень

https://github.com/ryanong/spy

И тогда вы сделаете это, как показано ниже

 # Call the connect method
  WebsocketClient::Proxy.stub(:authenticate) do
    ws_client = WebsocketClient::Proxy.new(stratum_worker)
    authenticate_spy = Spy.on(ws_client, :authenticate).and_call_through
    ws_client.connect

    msg = WebSocket::Frame::Incoming::Client.new
    msg.data = error_str
    ws_client.websocket.emit :message, msg

    # Somehow verify that authenticate was called.
    assert authenticate_spy.has_been_called?
  end

Если вы не хотите, чтобы фактический метод выполнялся и просто следили за ним, тогда вы будете использовать

authenticate_spy = Spy.on(ws_client, :authenticate)

Смотрите другие примеры ниже, чтобы ознакомиться с Spy и его концепциями

https://github.com/ryanong/spy

...