3

接続を提供する小さなアプリケーションがあります(チャットなど)。接続をキャッチし、そこからログインを取得し、データをリッスンして、送信者を除く各接続にブロードキャストします。

問題は、私は非常に高度なテスターではなく、これをテストする方法がわからないことです。

# Handle each connection
def serve(io)
  io.puts("LOGIN\n")
  # Listen for identifier
  user = io.gets.chomp

  ...

  # Add connection to the list
  @mutex.synchronize { @chatters[user] = io }

  # Get and broadcast input until connection returns nil
  loop do

    incoming = io.gets
    broadcast(incoming, io)

  end
end

#Send message out to everyone, but sender
def broadcast(message="", sender)

  # Mutex for safety - GServer uses threads
  @mutex.synchronize do

    @chatters.each do |chatter|

      socket = chatter[1]
      # Do not send to sender
      if sock != sender

        sock.print(message)

      end

    end

  end
end
4

1 に答える 1

4

単体テストだけを行いたい場合は、RSpec モック(またはその他のモック フレームワーク) を使用してメソッドをスタブ化し、ロジックが期待どおりに機能することを確認できます。実際に統合テストを実行したい場合は、より多くの作業が必要になり、ソケット用に個別のリーダーとライターを作成して、期待される動作について実際に会話の各部分を個別にテストできるようにする必要があります。

他の誰かが、あなたと同様の問題についてブログに書いているようです。おそらくその例はあなたを助けるでしょう。

質問が、ソケットのテスト方法ではなく、記述すべきテスト ケースに関するものである場合は、回答がより的を射たものになるように質問を書き直すことをお勧めします。

于 2012-05-03T18:14:03.307 に答える