我在基于 Scalatest 的單元測驗中有以下驗證:
response shouldBe Some(any[Long])
我只需要檢查回應是否屬于包含任何長值的 Some 型別。
但它失敗了:
Expected :Some(null)
Actual :Some(1635758033586)
什么是正確的做法?
uj5u.com熱心網友回復:
您似乎將模擬匹配器與 Scala-test 匹配器結合使用。在這種情況下它不起作用。
如果您的值long在每次測驗運行中都不同,您可以斷言它的存在。
response.isDefined shouldBe true
如果 的值long相同,則使用文字對其進行斷言
response shouldEqual Some(1635758033586)
uj5u.com熱心網友回復:
警告,前方強烈意見:
我強烈建議您不要使用 ScalaTest 的匹配器 DSL,而是使用普通的舊斷言:https : //www.scalatest.org/user_guide/using_assertions
匹配器 DSL 所做的只是為您提供另一種語法來表達您已經知道如何在常規 Scala 中執行的操作。如果你不知道,你可以學習它,然后在你的生產代碼中應用這些知識,而匹配器 DSL 則不是這種情況。因此,我認為匹配器 DSL 在很大程度上毫無意義,而且浪費了每個人的時間。
至于你的問題“如果值總是相同的怎么辦,那么如何驗證?”:有很多方法可以做到。這里是其中的一些:
assert(response.contains(1635758033586))
assertResult(Some(1635758033586)) {
result
}
assertResult(1635758033586) {
result.get
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/344782.html
上一篇:計算某個元素的組數
下一篇:立即投射Spark資料框現有架構
