php小編草莓為大家帶來了一篇關於如何從非測試函數呼叫「assert」函數的文章。在PHP中,我們通常將「assert」函數用於編寫測試案例,但有時我們也希望在非測試函數中使用它。本文將詳細介紹如何在非測試函數中呼叫「assert」函數的步驟和注意事項,幫助讀者更能理解並運用此函數。無論您是初學者還是有一定經驗的開發者,都能從本文中獲得有價值的知識和技巧。讓我們一起來探索吧!
這個問題類似於 Go 中非測試函數中的斷言,但我確實想從非測試函數中呼叫 assert.ElementsMatch
。
如何實例化 testing.T
物件?
該函數最終將從 main
調用,該函數使用標誌進行配置,因此它不能只是一個測試。
上下文:我們正在執行從某些來源資料庫到目標資料庫的資料遷移。遷移的第一部分是將資料從來源複製到目標的保存表中。第二部分(這是assert.ElementsMatch
發揮作用的地方)是查看保存表和通用表有何不同- 我們希望嘗試通過數據遷移捕獲不可預見的情況(例如,某些日期的格式可能不同或錯誤)身份證號碼已複製)。第三部分是,一旦保存表資料經過審查,將其複製到通用表中。這一切聽起來有點過於複雜,但這可能是因為目前正在使用來源資料庫和目標通用資料庫。
您不需要 testing.T
的實例。
assert.ElementsMatch
函數採用 #assert.TestingT
作為其參數,這是一個具有單一方法的介面。因此,您可以簡單地定義該介面的自訂實現,該實作可以使用該方法執行您喜歡的任何操作,並將該自訂實作的實例傳遞給 assert.ElementsMatch
。
例如:
type testingT struct{} func (testingT) Errorf(format string, args ...interface{}) { fmt.Printf(format, args...) } // ... t := new(testingT) if assert.ElementsMatch(t, listA, listB) { // ... }
以上是如何從非測試函數呼叫'assert”函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!