在iOS中包含I/O操作的單元測試方法的最佳方法是什麼?在iOS中使用I/O進行單元測試的方法
例如,我正在考慮使用Objective-C categories重新定義I/O方法的行爲,如imageNamed。但是,這樣可以防止黑盒單元測試,因爲有必要知道在實現中使用了哪些I/O方法。
在iOS中包含I/O操作的單元測試方法的最佳方法是什麼?在iOS中使用I/O進行單元測試的方法
例如,我正在考慮使用Objective-C categories重新定義I/O方法的行爲,如imageNamed。但是,這樣可以防止黑盒單元測試,因爲有必要知道在實現中使用了哪些I/O方法。
要麼傳入I/O操作的結果,以便可以提供測試數據來代替實際的I/O數據或使用OCMock。我已經使用OCMock來達到這個目的。如果您正在考慮OCMock,請至少閱讀所有可用方法的頭文件。
如果有遺留代碼的工作考慮讀/邁克爾羽毛學習書Working Effectively with Legacy Code
在第三方框架更換方法實現是做一個非常冒險的事情,因爲沒有辦法,以確保內部實施細則,因此可能會在不知不覺中破壞依賴關係。它也非常脆弱 - 即使它今天正常工作,它可能會在未來的框架版本中破壞一些東西。
沒有任何數量的單元測試可以保證您以這種方式進行更改的有效性。如果你這樣做純粹是爲了進行實驗,我相信這可能很有趣,可能對學習有用,但是你不會擔心黑盒測試。
考慮是否可以通過添加與現有方法並行的方法來完成所需的工作,而不是替換框架的方法實現。