为什么它应该在 scalatest 中“”{} 类型检查?
Why does it should "" {} type check in scalatest?
it should
如何接受一个字符串,然后是一个不带括号的函数:
import org.scalatest.FlatSpec
import scala.collection.mutable.Stack
class StackSpec extends FlatSpec {
it should "pop values in last-in-first-out order" in {
}
}
为什么不应该是:
it(should("pop values in last-in-first-out order" in {
}))
我最接近编译的是:
object st {
class fs {
def it(f: => Unit) = {
}
def should(s: String)(f: => Unit): Unit = {
Unit
}
it(should("pop values in last-in-first-out order") {
})
}
}
Scala 在如何将运算符和中缀方法名称转换为方法调用方面有一定的规则。
it should "foo" in {}
转换为
it.should("foo").in({})
在您不使用 "it" 而使用某些 String 的情况下,从 String 到某些包装器的隐式转换有助于提供 should 方法。
调用对象函数的.
和函数参数周围的()
在scala中是可选的。所以诀窍是 return 链中的对象实现提供你想要的 api 的功能。简单示例:
object InObj {
def in(func : => Unit) = func
}
object ShouldObj {
def should(x: String) = InObj
}
trait It {
def it = ShouldObj
}
class MyClass extends It {
val f = it should "Do something" in {
}
}
it should
如何接受一个字符串,然后是一个不带括号的函数:
import org.scalatest.FlatSpec
import scala.collection.mutable.Stack
class StackSpec extends FlatSpec {
it should "pop values in last-in-first-out order" in {
}
}
为什么不应该是:
it(should("pop values in last-in-first-out order" in {
}))
我最接近编译的是:
object st {
class fs {
def it(f: => Unit) = {
}
def should(s: String)(f: => Unit): Unit = {
Unit
}
it(should("pop values in last-in-first-out order") {
})
}
}
Scala 在如何将运算符和中缀方法名称转换为方法调用方面有一定的规则。
it should "foo" in {}
转换为
it.should("foo").in({})
在您不使用 "it" 而使用某些 String 的情况下,从 String 到某些包装器的隐式转换有助于提供 should 方法。
调用对象函数的.
和函数参数周围的()
在scala中是可选的。所以诀窍是 return 链中的对象实现提供你想要的 api 的功能。简单示例:
object InObj {
def in(func : => Unit) = func
}
object ShouldObj {
def should(x: String) = InObj
}
trait It {
def it = ShouldObj
}
class MyClass extends It {
val f = it should "Do something" in {
}
}