繁体   English   中英

测试Ruby TCPSocket服务器

[英]Test Ruby TCPSocket server

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

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

# 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

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

其他人显然在博客上发布了类似的问题 也许那个例子会对你有帮助。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM