Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
测试Ruby TCPSocket服务器_Ruby_Sockets_Testing_Tcpsocket - Fatal编程技术网

测试Ruby TCPSocket服务器

测试Ruby TCPSocket服务器,ruby,sockets,testing,tcpsocket,Ruby,Sockets,Testing,Tcpsocket,我有一个小应用程序,提供连接服务(比如聊天)。它捕获连接,从中获取登录信息,然后侦听数据并将其广播到每个连接(发送方除外) 问题是我不是一个非常先进的测试人员,不知道如何测试 # Handle each connection def serve(io) io.puts("LOGIN\n") # Listen for identifier user = io.gets.chomp ... # Add connection to the list @mutex.synch

我有一个小应用程序,提供连接服务(比如聊天)。它捕获连接,从中获取登录信息,然后侦听数据并将其广播到每个连接(发送方除外)

问题是我不是一个非常先进的测试人员,不知道如何测试

# 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

如果您只想进行单元测试,您可以使用(或其他模拟框架)来存根您的方法,并确保逻辑按照您期望的方式工作。如果您真的想进行集成测试,那就需要做更多的工作,并且需要为套接字创建一个单独的读写器,这样您就可以独立地测试会话的每一部分,以获得预期的行为

显然有人在博客上写了一篇关于你的博客的文章。也许这个例子会对你有所帮助

如果您的问题更多地是关于您应该编写的测试用例,而不是关于如何测试套接字,那么您可能需要重写您的问题,以便答案更符合目标