如果您不知道什麼是軟斷言,請閱讀軟斷言 – 為什麼應該將它們用於單元和整合測試?
本文是 Assert with Grace: Custom Assertions for Cleaner Code 的延續,它向您展示如何使用 AssertJ 建立自訂斷言。在這裡,您將學習如何擴展其方法以在自訂斷言之上使用軟斷言方法。
您可以使用 AssertJ 中的 Assertions 類別或自訂類別進行硬斷言。為了獲得軟斷言的所有好處,我們需要:
您在 Assert with Grace: Custom Assertions for Cleaner Code 一文中了解如何建立自訂斷言。看起來像這樣:
自訂斷言的使用在測試中顯示出更多的易讀性,並將測試有效值的責任發送給它:
有了自訂斷言,是時候實作自訂軟斷言了。
建立自訂軟斷言的過程很簡單,前提是實作自訂斷言。鑑於上一篇文章,我們將SimulationAssert 類別作為自訂斷言,並將建立SimulationSoftAssert 作為自訂軟斷言。步驟如下:
步驟看起來很複雜,但實際上,你最終會得到這樣的結果:
AssertJ SoftAssertion 類別負責軟斷言。這是適用於模擬上下文的範例:
AssertJ SoftAssertion 類別負責軟斷言。這是適用於模擬上下文的範例:
使用它的「問題」是我們將無法使用我們創建的自訂斷言。在上面的範例中,您可以使用 isEqualTo() 查看分期付款和金額中的斷言,因為 SoftAssertions 類別無法存取自訂斷言。
我們透過建立自訂軟斷言類別解決了這個問題。因此,我們將使用自訂類別:SimulationSoftAssert,而不是使用 SoftAssertions 類別。
SimulationSoftAssert.assertSoftly() 是軟體斷言的提供者,它將呼叫所有內部方法以便能夠在斷言期間管理錯誤和其他活動。在assertSoftly() 內部使用的assertThat() 將是自訂斷言,它將可以透過軟斷言和斷言主題之間的proxy() 存取自訂斷言。
使用這種方法,我們可以透過實作自訂斷言來在軟斷言中使用自訂斷言。
這就是大家!
您可以在credit-api專案中找到一個完全實現且有效的範例,您可以在其中看到以下內容:
以上是優雅斷言:使用 AssertJ 實作更簡潔的程式碼的自訂軟斷言的詳細內容。更多資訊請關注PHP中文網其他相關文章!