問題我一直在學習Ruby,並且遇到了問題。我正在構建一個戰艦遊戲來學習這門語言。紅寶石模擬IO - 選擇
遊戲發生2輸入和2個輸出流到構造(允許兩個客戶端從相同的終端玩,無論是從網絡的連接,或一個來自每個)
也能正常工作的遊戲本身,但是因爲我也在嘗試以測試驅動的開發方式工作。這引起了一個問題 - 用於測試(RSpec的),我嘲笑的輸入和輸出
@outputIO = mock("io")
@inputIO = mock("io")
一個IO對象這個偉大的工程的大部分工作,但是某些部分需要使用SELECT命令,使雙方玩家可以在同一時間內輸入查詢信息:
result = select([@p1_input,@p2_input], nil, nil)
for r in result[0]
if r == @p1_input || r == @p2_input
input = r
end
end
@ p1_input和@ p2_input在構造函數中進行設置。當我運行rspec測試時,我得到:
TypeError: can't convert RSpec::Mocks::Mock into IO
我該如何模擬IO以使其正常工作?我應該創建一個新的IO實例並覆蓋gets方法,而不是模擬嗎?這足夠嗎?
在此先感謝。
StringIO不能與IO.select一起工作,所以這沒什麼幫助,在這裏... –
不,但你可以使用'IO.pipe'來創建測試通道 – phoet
嗯......有點重量級的比較一個模擬,但是。 –