Pruebe el servidor Ruby TCPSocket

Tengo una pequeña aplicación, sirviendo conexiones (como un chat). Captura la conexión, obtiene el inicio de sesión, luego escucha los datos y los transmite a cada conexión, excepto al remitente.

El problema es que no soy un probador muy avanzado y no sé cómo se puede probar esto.

# 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

preguntado el 03 de mayo de 12 a las 17:05

1 Respuestas

Si solo quiere hacer pruebas unitarias, puede usar simulacros RSpec (o algún otro marco de burla) para probar sus métodos y asegurarse de que la lógica funcione de la manera que espera. Si realmente desea realizar una prueba de integración, eso es mucho más trabajo y requerirá que cree un lector y un escritor separados para el socket para que pueda probar cada parte de la conversación de forma independiente para el comportamiento esperado.

Aparentemente, alguien más ha escrito en su blog sobre un problema similar a tí. Tal vez ese ejemplo te ayude.

Si su pregunta es más sobre los casos de prueba que debe escribir, en lugar de cómo probar los sockets, entonces es posible que desee volver a escribir su pregunta para que las respuestas sean más precisas.

contestado el 03 de mayo de 12 a las 19:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.