[英]How to mock an outgoing Socket connection?
在集成測試(JDK 6)中,我試圖捕獲所有傳出的TCP連接並模擬它們。 看起來我應該使用java.net.Socket#setSocketImplFactory()
方法。 目前工作正常,但我無法理解如何獲得原始工廠的訪問權限,以便實例化原始JDK提供的SocketImpl
類。 我之所以需要這個,主要是因為我想讓一些連接自由地出去,而不是嘲笑。 您能否就此問題提出一些手冊/指南/說明?
我會為Socket創建一個Socket服務,而不是模擬Socket。 這可以捕獲所有寫入的數據並以您希望的任何方式進行回復。 它可以在同一個測試中運行,也可以在同一個線程中運行。
根據javadoc,您應該能夠使用SocketFactory#getDefault()來獲取您的環境的默認SocketFactory。
順便說一句:您可能還想看看這個RFE / bug,它聲明SocketImplFactory基本上是一個死胡同: http ://bugs.sun.com/bugdatabase/view_bug.do?video_id = 4245730
查看Socket類的源代碼,沒有原始工廠 - 構造函數檢查factory
是否為null,如果是, PlainSocketImpl()
將impl
指定為新的PlainSocketImpl()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.