我想測試一個函數是否能夠使用「os」包的stdout變量打印到標準輸出,實際上是打印到標準輸出。我運行這個函數,我發現它打印到標準輸出。現在我想弄清楚如何證明這個函數使用golang代碼打印到標準輸出。我可以使用「os」包的stdout變量來檢查在調用數組中的某個函數之後stdout是否已被寫入?如何檢查stdout是否已寫入?
我試圖通過調用os.stdout變量的Stat()方法來確定stdout是否已寫入,以便訪問stdout的大小和上次修改時間,但大小和上次修改時間沒有反映出一個函數寫入stdout的事實。
我還沒有嘗試過這樣做,但在Python中,我會使用'unittest.mock.patch'在函數調用的持續時間內向'os.stdout'上monkeypatch不同的bufio,然後讀取bufio後查看是否已寫入。 –
你可以通過一個不同的文件(可能是一個模擬)到你的實現,而不是stdout,你可以斷言嗎? –
從「外部」進行測試,或者使stdout可配置(在測試期間更改它)或者根本不測試這些內容。 – Volker