2012-05-03 87 views
3

我有一個小應用程序,服務連接(如聊天)。它捕獲連接,從中獲取登錄信息,然後監聽數據並將其廣播到每個連接(發件人除外)。測試紅寶石TCPSocket服務器

問題是我不是一個非常先進的測試人員,不知道如何測試。

# 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

如果你只想做單元測試,你可以使用RSpec mocks(或其他模擬框架)來,踩你的方法,並確保邏輯運作的,你所期望的方式。如果你真的想推動一個集成測試,那將需要更多的工作,並且需要你爲套接字創建一個單獨的讀寫器,以便你可以獨立地測試每一段對話的預期行爲。

其他人顯然已經爲你的博客寫了一篇similar issue。也許這個例子會幫助你。

如果你的問題更多的是關於你應該編寫的測試用例,而不是關於如何測試套接字,那麼你可能需要重寫你的問題,以便答案更符合目標。

+0

謝謝!非常接近答案.. – sadfuzzy