在Scala中,"shouldBe"和"shouldEqual"有什么区别?

22

我应该在什么情况下使用 "shouldBe",在什么情况下使用 "shouldEqual"?

port shouldEqual 8000
port shouldBe 8000
1个回答

18

来自http://www.scalatest.org/user_guide/using_matchers#checkingEqualityWithMatchers

result shouldEqual 3 // 可以自定义相等性,不需要括号

result shouldBe 3 // 不能自定义相等性,编译速度最快,不需要括号

第一个函数使用隐式的Equality[T]来验证计算出的值是否与期望值相等,而第二个函数则不使用。因此,如果只想比较端口号,则使用shouldBe即可。


""should be"和"shouldBe"可能是编译速度最快的匹配语法,用于相等比较,因为编译器不需要每次都搜索隐式的Equality[T]。" - Logan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接