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") {
})
}
}
答案 0 :(得分:4)
调用对象函数的.
和函数参数周围的()
在scala中是可选的。所以诀窍是链中的返回对象实现了提供所需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 {
}
}
答案 1 :(得分:2)
Scala对运算符和中缀方法名称如何转换为方法调用有一定的规则。
it should "foo" in {}
转换为
it.should("foo").in({})
如果您不使用"它"但是一些String从String到某个包装器的隐式转换有助于提供should-method。